diff options
| author | Miles Macklin <[email protected]> | 2017-03-10 14:51:31 +1300 |
|---|---|---|
| committer | Miles Macklin <[email protected]> | 2017-03-10 14:51:31 +1300 |
| commit | ad3d90fafe5ee79964bdfe1f1e0704c3ffcdfd5f (patch) | |
| tree | 4cc6f3288363889d7342f7f8407c0251e6904819 /doc/_static/api | |
| download | flex-ad3d90fafe5ee79964bdfe1f1e0704c3ffcdfd5f.tar.xz flex-ad3d90fafe5ee79964bdfe1f1e0704c3ffcdfd5f.zip | |
Initial 1.1.0 binary release
Diffstat (limited to 'doc/_static/api')
42 files changed, 11807 insertions, 0 deletions
diff --git a/doc/_static/api/_nv_flex_8h.html b/doc/_static/api/_nv_flex_8h.html new file mode 100644 index 0000000..837b040 --- /dev/null +++ b/doc/_static/api/_nv_flex_8h.html @@ -0,0 +1,4230 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.9.1"/> +<title>FLEX: NvFlex.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +<link href="flex.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">FLEX +  <span id="projectnumber">1.1.0</span> + </div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.9.1 --> +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Data Structures</a> | +<a href="#typedef-members">Typedefs</a> | +<a href="#enum-members">Enumerations</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">NvFlex.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> + +<p><a href="_nv_flex_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Data Structures</h2></td></tr> +<tr class="memitem:struct_nv_flex_params"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_params">NvFlexParams</a></td></tr> +<tr class="separator:struct_nv_flex_params"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:struct_nv_flex_timers"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_timers">NvFlexTimers</a></td></tr> +<tr class="separator:struct_nv_flex_timers"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:struct_nv_flex_solver_callback_params"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_solver_callback_params">NvFlexSolverCallbackParams</a></td></tr> +<tr class="separator:struct_nv_flex_solver_callback_params"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:struct_nv_flex_init_desc"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_init_desc">NvFlexInitDesc</a></td></tr> +<tr class="separator:struct_nv_flex_init_desc"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_solver_callback.html">NvFlexSolverCallback</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:struct_nv_flex_sphere_geometry"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_sphere_geometry">NvFlexSphereGeometry</a></td></tr> +<tr class="separator:struct_nv_flex_sphere_geometry"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:struct_nv_flex_capsule_geometry"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_capsule_geometry">NvFlexCapsuleGeometry</a></td></tr> +<tr class="separator:struct_nv_flex_capsule_geometry"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:struct_nv_flex_box_geometry"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_box_geometry">NvFlexBoxGeometry</a></td></tr> +<tr class="separator:struct_nv_flex_box_geometry"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:struct_nv_flex_convex_mesh_geometry"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_convex_mesh_geometry">NvFlexConvexMeshGeometry</a></td></tr> +<tr class="separator:struct_nv_flex_convex_mesh_geometry"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:struct_nv_flex_triangle_mesh_geometry"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_triangle_mesh_geometry">NvFlexTriangleMeshGeometry</a></td></tr> +<tr class="separator:struct_nv_flex_triangle_mesh_geometry"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:struct_nv_flex_s_d_f_geometry"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_s_d_f_geometry">NvFlexSDFGeometry</a></td></tr> +<tr class="separator:struct_nv_flex_s_d_f_geometry"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:union_nv_flex_collision_geometry"><td class="memItemLeft" align="right" valign="top">union  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#union_nv_flex_collision_geometry">NvFlexCollisionGeometry</a></td></tr> +<tr class="separator:union_nv_flex_collision_geometry"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:struct_nv_flex_detail_timer"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_detail_timer">NvFlexDetailTimer</a></td></tr> +<tr class="separator:struct_nv_flex_detail_timer"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> +Typedefs</h2></td></tr> +<tr class="memitem:a3078976e98f370a9fbdb11db80f1f318"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a></td></tr> +<tr class="separator:a3078976e98f370a9fbdb11db80f1f318"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:afaeb57f4ee7e54b1ae1b912a465ed39e"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a></td></tr> +<tr class="separator:afaeb57f4ee7e54b1ae1b912a465ed39e"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a50a3933d3f7b77d0500c702b1fa9ba9a"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a></td></tr> +<tr class="separator:a50a3933d3f7b77d0500c702b1fa9ba9a"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abe6f00c9b94debbf7c181082a14076d5"><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#abe6f00c9b94debbf7c181082a14076d5">NvFlexErrorCallback</a>) (<a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfca">NvFlexErrorSeverity</a> type, const char *msg, const char *file, int line)</td></tr> +<tr class="separator:abe6f00c9b94debbf7c181082a14076d5"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2aea4c3d772b4dbccb7dd9ba37c1bdc0"><td class="memItemLeft" align="right" valign="top">typedef unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a></td></tr> +<tr class="separator:a2aea4c3d772b4dbccb7dd9ba37c1bdc0"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a56e990c5bfbc89677988cbf2471c0ade"><td class="memItemLeft" align="right" valign="top">typedef unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlexDistanceFieldId</a></td></tr> +<tr class="separator:a56e990c5bfbc89677988cbf2471c0ade"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a7ab5aa68da7ca1f69211a900f1a1c586"><td class="memItemLeft" align="right" valign="top">typedef unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a></td></tr> +<tr class="separator:a7ab5aa68da7ca1f69211a900f1a1c586"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> +Enumerations</h2></td></tr> +<tr class="memitem:a6541b33eaca7b2323e73b30cea34d16c"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16c">NvFlexMapFlags</a> { <br /> +  <a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">eNvFlexMapWait</a> = 0, +<br /> +  <a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca1bd450ab65ccc06288fae95e23d5e6f1">eNvFlexMapDoNotWait</a> = 1, +<br /> +  <a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16caa01c2dce3aa1e0d9d151060e1786c706">eNvFlexMapDiscard</a> = 2 +<br /> + }</td></tr> +<tr class="separator:a6541b33eaca7b2323e73b30cea34d16c"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a169e4c126acf46bdebf76c36a44deca3"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3">NvFlexBufferType</a> { <br /> +  <a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8">eNvFlexBufferHost</a> = 0, +<br /> +  <a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3a103255fa795b55a7f430a41493002576">eNvFlexBufferDevice</a> = 1 +<br /> + }</td></tr> +<tr class="separator:a169e4c126acf46bdebf76c36a44deca3"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a46f5d35902f7da40628247175a174f3b"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3b">NvFlexRelaxationMode</a> { <br /> +  <a class="el" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba33711a4b466d606d68dee43918f819db">eNvFlexRelaxationGlobal</a> = 0, +<br /> +  <a class="el" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba858afe9529e908c2bc8ce92da8943b7c">eNvFlexRelaxationLocal</a> = 1 +<br /> + }</td></tr> +<tr class="separator:a46f5d35902f7da40628247175a174f3b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5ad2a7745fcb4d4afd5b5f1bda074644"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644">NvFlexPhase</a> { <br /> +  <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644ad108f6ebf28346813cfd3602d984bb32">eNvFlexPhaseGroupMask</a> = 0x00ffffff, +<br /> +  <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a453a23cc8e9d2e6097b5be187f3c6977">eNvFlexPhaseSelfCollide</a> = 1 << 24, +<br /> +  <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a76a62d3a5df428f18e01f8b37573a7b1">eNvFlexPhaseSelfCollideFilter</a> = 1 << 25, +<br /> +  <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a1728772beb1746ace4c549b2ed8f1d74">eNvFlexPhaseFluid</a> = 1 << 26 +<br /> + }</td></tr> +<tr class="separator:a5ad2a7745fcb4d4afd5b5f1bda074644"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ab4435b3857752360375fe52fc992cfca"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfca">NvFlexErrorSeverity</a> { <br /> +  <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8aed6496f033604148138299fa075edd">eNvFlexLogError</a> = 0, +<br /> +  <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa03d239332ae87f46270855dd06b6e58f">eNvFlexLogInfo</a> = 1, +<br /> +  <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa5538835c4767004ba5fd443ada08ea61">eNvFlexLogWarning</a> = 2, +<br /> +  <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa77b51759e33d60b2caf327bb4835351e">eNvFlexLogDebug</a> = 4, +<br /> +  <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8feff72c0b0391e8adf3ddb6c39ef10e">eNvFlexLogAll</a> = -1 +<br /> + }</td></tr> +<tr class="separator:ab4435b3857752360375fe52fc992cfca"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4f80c8bcfa6de99a52983adb13d80db9"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9">NvFlexSolverCallbackStage</a> { <br /> +  <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a9f3914fdb03915a14ebe55a2c730e7ff">eNvFlexStageIterationStart</a>, +<br /> +  <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9ab75a912c3990b0fbd6b06a6741a20e69">eNvFlexStageIterationEnd</a>, +<br /> +  <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a79ce9005dbc92198a1f180c6afde6a44">eNvFlexStageSubstepBegin</a>, +<br /> +  <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a6f13e2ebdbf21f8c8ebcfe1ac9160586">eNvFlexStageSubstepEnd</a>, +<br /> +  <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a260340ba9071892bd8795c3b29289806">eNvFlexStageUpdateEnd</a>, +<br /> +  <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a1f2e7acff9b3b74922f90240d29fd1b3">eNvFlexStageCount</a> +<br /> + }</td></tr> +<tr class="separator:a4f80c8bcfa6de99a52983adb13d80db9"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a9b2d3dc5ac42011aeec4e13be2e14252"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252">NvFlexComputeType</a> { <br /> +  <a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252ad0c27f7aafdc4fe569722025c8eb2178">eNvFlexCUDA</a>, +<br /> +  <a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a297a93979a88fda6e6b551dcab5fb3df">eNvFlexD3D11</a>, +<br /> +  <a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a15e78a7baf13cc7fd73f255ac84f0943">eNvFlexD3D12</a> +<br /> + }</td></tr> +<tr class="separator:a9b2d3dc5ac42011aeec4e13be2e14252"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a0506ae712f846087b8647ea389ac26ba"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26ba">NvFlexCollisionShapeType</a> { <br /> +  <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baae22144512ae098865c6725af16a68ad3">eNvFlexShapeSphere</a> = 0, +<br /> +  <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1724c140b583fbf2c11c14a24dd3764a">eNvFlexShapeCapsule</a> = 1, +<br /> +  <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baab17c8dd4f9500016b77a9b49de3c48e7">eNvFlexShapeBox</a> = 2, +<br /> +  <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baaed52f0e803c6745ffc1a5f018a8756ce">eNvFlexShapeConvexMesh</a> = 3, +<br /> +  <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa315488da382a5e9794c83358385f7ae1">eNvFlexShapeTriangleMesh</a> = 4, +<br /> +  <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1fd78f8694b954f8d12fe7d911f17180">eNvFlexShapeSDF</a> = 5 +<br /> + }</td></tr> +<tr class="separator:a0506ae712f846087b8647ea389ac26ba"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a31c31ea4f96cd4fdadc6b7317691304c"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304c">NvFlexCollisionShapeFlags</a> { <br /> +  <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cae8a10737948abf6973f0f1d66bae7ef8">eNvFlexShapeFlagTypeMask</a> = 0x7, +<br /> +  <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cadc6740cf6d829fba159d92e43ffb5992">eNvFlexShapeFlagDynamic</a> = 8, +<br /> +  <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304ca409215fa9b917f2d0830a66bd11b3ff8">eNvFlexShapeFlagTrigger</a> = 16, +<br /> +  <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304caa1c1225f6b8b2906c83748cfc46b81d9">eNvFlexShapeFlagReserved</a> = 0xffffff00 +<br /> + }</td></tr> +<tr class="separator:a31c31ea4f96cd4fdadc6b7317691304c"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:af53fa9d7caef50db346475065504848d"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API int </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#af53fa9d7caef50db346475065504848d">NvFlexMakePhase</a> (int group, int flags)</td></tr> +<tr class="separator:af53fa9d7caef50db346475065504848d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a687e5ec141948f779faa9183b68cb743"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a687e5ec141948f779faa9183b68cb743">NvFlexInit</a> (int version=NV_FLEX_VERSION, <a class="el" href="_nv_flex_8h.html#abe6f00c9b94debbf7c181082a14076d5">NvFlexErrorCallback</a> errorFunc=0, <a class="el" href="_nv_flex_8h.html#struct_nv_flex_init_desc">NvFlexInitDesc</a> *desc=0)</td></tr> +<tr class="separator:a687e5ec141948f779faa9183b68cb743"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aaf59e45ada57c7f958a8030099cbe211"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#aaf59e45ada57c7f958a8030099cbe211">NvFlexShutdown</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib)</td></tr> +<tr class="separator:aaf59e45ada57c7f958a8030099cbe211"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac25ec5de38c177db51198bb620644d36"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API int </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ac25ec5de38c177db51198bb620644d36">NvFlexGetVersion</a> ()</td></tr> +<tr class="separator:ac25ec5de38c177db51198bb620644d36"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:af7f91fa47c779fcd8bee60061de6d31c"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#af7f91fa47c779fcd8bee60061de6d31c">NvFlexCreateSolver</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, int maxParticles, int maxDiffuseParticles, int maxNeighborsPerParticle=96)</td></tr> +<tr class="separator:af7f91fa47c779fcd8bee60061de6d31c"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a1d755d7b090f7ed5c4c50d2d3fef1558"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a1d755d7b090f7ed5c4c50d2d3fef1558">NvFlexDestroySolver</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver)</td></tr> +<tr class="separator:a1d755d7b090f7ed5c4c50d2d3fef1558"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae0d57e4fc2b3b51ec08f7da0a28ff343"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ae0d57e4fc2b3b51ec08f7da0a28ff343">NvFlexGetSolverLibrary</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver)</td></tr> +<tr class="separator:ae0d57e4fc2b3b51ec08f7da0a28ff343"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac5427457488ab3f2de91cf65335dda08"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="struct_nv_flex_solver_callback.html">NvFlexSolverCallback</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ac5427457488ab3f2de91cf65335dda08">NvFlexRegisterSolverCallback</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="struct_nv_flex_solver_callback.html">NvFlexSolverCallback</a> function, <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9">NvFlexSolverCallbackStage</a> stage)</td></tr> +<tr class="separator:ac5427457488ab3f2de91cf65335dda08"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac75370f005fd453fe8a324fe62be1b5c"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, float dt, int substeps, bool enableTimers)</td></tr> +<tr class="separator:ac75370f005fd453fe8a324fe62be1b5c"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae2db6ad8006027c1acf2315a0d15fe71"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ae2db6ad8006027c1acf2315a0d15fe71">NvFlexSetParams</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, const <a class="el" href="_nv_flex_8h.html#struct_nv_flex_params">NvFlexParams</a> *params)</td></tr> +<tr class="separator:ae2db6ad8006027c1acf2315a0d15fe71"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a581b458848039220203547af53de128f"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a581b458848039220203547af53de128f">NvFlexGetParams</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#struct_nv_flex_params">NvFlexParams</a> *params)</td></tr> +<tr class="separator:a581b458848039220203547af53de128f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aea2af336bdd96d7168c3acdce6d1875d"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#aea2af336bdd96d7168c3acdce6d1875d">NvFlexSetActive</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *indices, int n)</td></tr> +<tr class="separator:aea2af336bdd96d7168c3acdce6d1875d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aeed8fe87fa073067af1a45560cc54a79"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#aeed8fe87fa073067af1a45560cc54a79">NvFlexGetActive</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *indices)</td></tr> +<tr class="separator:aeed8fe87fa073067af1a45560cc54a79"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2345372dea2ad4f043153a84e7a2c407"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API int </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a2345372dea2ad4f043153a84e7a2c407">NvFlexGetActiveCount</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver)</td></tr> +<tr class="separator:a2345372dea2ad4f043153a84e7a2c407"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abef057ac89ba5cf1cd71f0084f9313de"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#abef057ac89ba5cf1cd71f0084f9313de">NvFlexSetParticles</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *p, int n)</td></tr> +<tr class="separator:abef057ac89ba5cf1cd71f0084f9313de"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a84f06fff995d8eb034cff81c811fa312"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a84f06fff995d8eb034cff81c811fa312">NvFlexGetParticles</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *p, int n)</td></tr> +<tr class="separator:a84f06fff995d8eb034cff81c811fa312"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aa457096286567a37d4f1d5f4857d9296"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#aa457096286567a37d4f1d5f4857d9296">NvFlexSetRestParticles</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *p, int n)</td></tr> +<tr class="separator:aa457096286567a37d4f1d5f4857d9296"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:affb884bcf3e7e389812d0b52b0fc0490"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#affb884bcf3e7e389812d0b52b0fc0490">NvFlexGetRestParticles</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *p, int n)</td></tr> +<tr class="separator:affb884bcf3e7e389812d0b52b0fc0490"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abfa62e01c4f4511d3f6a00ab6a0f257a"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#abfa62e01c4f4511d3f6a00ab6a0f257a">NvFlexGetSmoothParticles</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *p, int n)</td></tr> +<tr class="separator:abfa62e01c4f4511d3f6a00ab6a0f257a"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:afe09e63d22c5156fe24cd2d2bc069c04"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#afe09e63d22c5156fe24cd2d2bc069c04">NvFlexSetVelocities</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *v, int n)</td></tr> +<tr class="separator:afe09e63d22c5156fe24cd2d2bc069c04"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a67bd9669086e823ebe33d08d14f5b2b9"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a67bd9669086e823ebe33d08d14f5b2b9">NvFlexGetVelocities</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *v, int n)</td></tr> +<tr class="separator:a67bd9669086e823ebe33d08d14f5b2b9"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3117f92571613709936291c48414e521"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a3117f92571613709936291c48414e521">NvFlexSetPhases</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *phases, int n)</td></tr> +<tr class="separator:a3117f92571613709936291c48414e521"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a15b7a5449bee38bbe5dcaf23690f09f5"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a15b7a5449bee38bbe5dcaf23690f09f5">NvFlexGetPhases</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *phases, int n)</td></tr> +<tr class="separator:a15b7a5449bee38bbe5dcaf23690f09f5"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:add03fd357383845f07e0596290faf316"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#add03fd357383845f07e0596290faf316">NvFlexSetNormals</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *normals, int n)</td></tr> +<tr class="separator:add03fd357383845f07e0596290faf316"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aadb2a0cf125e4a6b2f3443ab7dcbd3d4"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#aadb2a0cf125e4a6b2f3443ab7dcbd3d4">NvFlexGetNormals</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *normals, int n)</td></tr> +<tr class="separator:aadb2a0cf125e4a6b2f3443ab7dcbd3d4"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae67c0cab2ecee8eb9485a26ef0fad6a9"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ae67c0cab2ecee8eb9485a26ef0fad6a9">NvFlexSetSprings</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *indices, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *restLengths, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *stiffness, int numSprings)</td></tr> +<tr class="separator:ae67c0cab2ecee8eb9485a26ef0fad6a9"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aab5f90f4024d71d08c3f9327c6d8c184"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#aab5f90f4024d71d08c3f9327c6d8c184">NvFlexGetSprings</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *indices, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *restLengths, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *stiffness, int numSprings)</td></tr> +<tr class="separator:aab5f90f4024d71d08c3f9327c6d8c184"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a89c872e761a53c87375f536a0ef597d8"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a89c872e761a53c87375f536a0ef597d8">NvFlexSetRigids</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *offsets, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *indices, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *restPositions, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *restNormals, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *stiffness, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *rotations, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *translations, int numRigids, int numIndices)</td></tr> +<tr class="separator:a89c872e761a53c87375f536a0ef597d8"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3eafe7fe6b200c757c7402eca7d13f6d"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a3eafe7fe6b200c757c7402eca7d13f6d">NvFlexGetRigidTransforms</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *rotations, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *translations)</td></tr> +<tr class="separator:a3eafe7fe6b200c757c7402eca7d13f6d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:afdda5a5210938a1e8a7c3a8218ad468e"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#afdda5a5210938a1e8a7c3a8218ad468e">NvFlexCreateTriangleMesh</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib)</td></tr> +<tr class="separator:afdda5a5210938a1e8a7c3a8218ad468e"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4cb4462803ebff105d151fd45b4efad6"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a4cb4462803ebff105d151fd45b4efad6">NvFlexDestroyTriangleMesh</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, <a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a> mesh)</td></tr> +<tr class="separator:a4cb4462803ebff105d151fd45b4efad6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4958c555f0ed65dee54c37af32529356"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a4958c555f0ed65dee54c37af32529356">NvFlexUpdateTriangleMesh</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, <a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a> mesh, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *vertices, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *indices, int numVertices, int numTriangles, const float *lower, const float *upper)</td></tr> +<tr class="separator:a4958c555f0ed65dee54c37af32529356"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a60794d849b4184335e2a0ddec0a9e6a2"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a60794d849b4184335e2a0ddec0a9e6a2">NvFlexGetTriangleMeshBounds</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, const <a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a> mesh, float *lower, float *upper)</td></tr> +<tr class="separator:a60794d849b4184335e2a0ddec0a9e6a2"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5c28caf6d5d513c5adacd4fbc782f308"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlexDistanceFieldId</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a5c28caf6d5d513c5adacd4fbc782f308">NvFlexCreateDistanceField</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib)</td></tr> +<tr class="separator:a5c28caf6d5d513c5adacd4fbc782f308"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ab11bdd7f778d17af16cefea33265cb65"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ab11bdd7f778d17af16cefea33265cb65">NvFlexDestroyDistanceField</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, <a class="el" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlexDistanceFieldId</a> sdf)</td></tr> +<tr class="separator:ab11bdd7f778d17af16cefea33265cb65"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a584ffb275b9986fd5444ed1a7ea247d9"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a584ffb275b9986fd5444ed1a7ea247d9">NvFlexUpdateDistanceField</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, <a class="el" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlexDistanceFieldId</a> sdf, int dimx, int dimy, int dimz, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *field)</td></tr> +<tr class="separator:a584ffb275b9986fd5444ed1a7ea247d9"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:afbaafe2b1006352002b03aabaca531cc"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#afbaafe2b1006352002b03aabaca531cc">NvFlexCreateConvexMesh</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib)</td></tr> +<tr class="separator:afbaafe2b1006352002b03aabaca531cc"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac85b6372e5c7bfc508ecb7b8c59c72a0"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ac85b6372e5c7bfc508ecb7b8c59c72a0">NvFlexDestroyConvexMesh</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, <a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a> convex)</td></tr> +<tr class="separator:ac85b6372e5c7bfc508ecb7b8c59c72a0"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a69289002a6f8ecd697118f0ec6572f5d"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a69289002a6f8ecd697118f0ec6572f5d">NvFlexUpdateConvexMesh</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, <a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a> convex, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *planes, int numPlanes, float *lower, float *upper)</td></tr> +<tr class="separator:a69289002a6f8ecd697118f0ec6572f5d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad56e661161763579afb375b3841eb5ff"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ad56e661161763579afb375b3841eb5ff">NvFlexGetConvexMeshBounds</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, <a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a> mesh, float *lower, float *upper)</td></tr> +<tr class="separator:ad56e661161763579afb375b3841eb5ff"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad6ee1e23e0c49aad63df8f605182de3a"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API int </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ad6ee1e23e0c49aad63df8f605182de3a">NvFlexMakeShapeFlags</a> (<a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26ba">NvFlexCollisionShapeType</a> type, bool dynamic)</td></tr> +<tr class="separator:ad6ee1e23e0c49aad63df8f605182de3a"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aea4e7117722df53dfe44c676496117fa"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#aea4e7117722df53dfe44c676496117fa">NvFlexSetShapes</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *geometry, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *shapePositions, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *shapeRotations, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *shapePrevPositions, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *shapePrevRotations, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *shapeFlags, int numShapes)</td></tr> +<tr class="separator:aea4e7117722df53dfe44c676496117fa"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aa03d94be697cdc3aaa56e469d87255a4"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#aa03d94be697cdc3aaa56e469d87255a4">NvFlexSetDynamicTriangles</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *indices, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *normals, int numTris)</td></tr> +<tr class="separator:aa03d94be697cdc3aaa56e469d87255a4"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abdfd0834422dd99154a27962614525e5"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#abdfd0834422dd99154a27962614525e5">NvFlexGetDynamicTriangles</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *indices, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *normals, int numTris)</td></tr> +<tr class="separator:abdfd0834422dd99154a27962614525e5"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a7f2b59fba77c60ce116e1eac57d63e50"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a7f2b59fba77c60ce116e1eac57d63e50">NvFlexSetInflatables</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *startTris, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *numTris, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *restVolumes, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *overPressures, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *constraintScales, int numInflatables)</td></tr> +<tr class="separator:a7f2b59fba77c60ce116e1eac57d63e50"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a6f6f14e625dc744a127be81e6dc4cb74"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a6f6f14e625dc744a127be81e6dc4cb74">NvFlexGetDensities</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *densities, int n)</td></tr> +<tr class="separator:a6f6f14e625dc744a127be81e6dc4cb74"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae28167c680ad56dcff600ce0a223cec5"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ae28167c680ad56dcff600ce0a223cec5">NvFlexGetAnisotropy</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *q1, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *q2, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *q3)</td></tr> +<tr class="separator:ae28167c680ad56dcff600ce0a223cec5"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a37ada4b95999cc253dfb049b99030d50"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API int </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a37ada4b95999cc253dfb049b99030d50">NvFlexGetDiffuseParticles</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *p, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *v, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *indices)</td></tr> +<tr class="separator:a37ada4b95999cc253dfb049b99030d50"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5a7213593dd9a23d9d67f8517d1da9de"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a5a7213593dd9a23d9d67f8517d1da9de">NvFlexSetDiffuseParticles</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *p, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *v, int n)</td></tr> +<tr class="separator:a5a7213593dd9a23d9d67f8517d1da9de"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a7edac9cf450917147b83e98f5cb09f5d"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a7edac9cf450917147b83e98f5cb09f5d">NvFlexGetContacts</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *planes, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *velocities, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *indices, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *counts)</td></tr> +<tr class="separator:a7edac9cf450917147b83e98f5cb09f5d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ab1eec84a21b1872fba11c9b4cc1d1629"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ab1eec84a21b1872fba11c9b4cc1d1629">NvFlexGetBounds</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *lower, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *upper)</td></tr> +<tr class="separator:ab1eec84a21b1872fba11c9b4cc1d1629"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a221a4621ab98eca6ecd3368d288154a4"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API float </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a221a4621ab98eca6ecd3368d288154a4">NvFlexGetDeviceLatency</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver)</td></tr> +<tr class="separator:a221a4621ab98eca6ecd3368d288154a4"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ab16b6d2e11e0ab417ee6c4cf16f0a27d"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ab16b6d2e11e0ab417ee6c4cf16f0a27d">NvFlexGetTimers</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#struct_nv_flex_timers">NvFlexTimers</a> *timers)</td></tr> +<tr class="separator:ab16b6d2e11e0ab417ee6c4cf16f0a27d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ab1efb6764f65900cb09f0188ad6da08a"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API int </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ab1efb6764f65900cb09f0188ad6da08a">NvFlexGetDetailTimers</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#struct_nv_flex_detail_timer">NvFlexDetailTimer</a> **timers)</td></tr> +<tr class="separator:ab1efb6764f65900cb09f0188ad6da08a"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad48f83b8442323687d2268206e913496"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, int elementCount, int elementByteStride, <a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3">NvFlexBufferType</a> type)</td></tr> +<tr class="separator:ad48f83b8442323687d2268206e913496"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ab559759820a4322aff061745ef26c867"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ab559759820a4322aff061745ef26c867">NvFlexFreeBuffer</a> (<a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *buf)</td></tr> +<tr class="separator:ab559759820a4322aff061745ef26c867"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a0898bb9210440b159688d4647f6eb083"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void * </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap</a> (<a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *buffer, int flags)</td></tr> +<tr class="separator:a0898bb9210440b159688d4647f6eb083"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a054cb27646a389ea257d1bbde46a6e97"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a054cb27646a389ea257d1bbde46a6e97">NvFlexUnmap</a> (<a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *buffer)</td></tr> +<tr class="separator:a054cb27646a389ea257d1bbde46a6e97"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aab83daf46e5a9428a0ad76fb75e8ec7e"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#aab83daf46e5a9428a0ad76fb75e8ec7e">NvFlexRegisterOGLBuffer</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, int buf, int elementCount, int elementByteStride)</td></tr> +<tr class="separator:aab83daf46e5a9428a0ad76fb75e8ec7e"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a78045a8d4e856372df108dc616a94cd8"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a78045a8d4e856372df108dc616a94cd8">NvFlexUnregisterOGLBuffer</a> (<a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *buf)</td></tr> +<tr class="separator:a78045a8d4e856372df108dc616a94cd8"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ab487e68ce1c84ce1eec0c85b7daf5aa0"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ab487e68ce1c84ce1eec0c85b7daf5aa0">NvFlexRegisterD3DBuffer</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, void *buffer, int elementCount, int elementByteStride)</td></tr> +<tr class="separator:ab487e68ce1c84ce1eec0c85b7daf5aa0"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad607e7916e5d76b384a61f1c1f94ab32"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ad607e7916e5d76b384a61f1c1f94ab32">NvFlexUnregisterD3DBuffer</a> (<a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *buf)</td></tr> +<tr class="separator:ad607e7916e5d76b384a61f1c1f94ab32"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a42ec7b30c79d4733e6a756b5d9b15ee6"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a42ec7b30c79d4733e6a756b5d9b15ee6">NvFlexAcquireContext</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib)</td></tr> +<tr class="separator:a42ec7b30c79d4733e6a756b5d9b15ee6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae6671f352bd77e296609d0bc2a57fd11"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ae6671f352bd77e296609d0bc2a57fd11">NvFlexRestoreContext</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib)</td></tr> +<tr class="separator:ae6671f352bd77e296609d0bc2a57fd11"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4c451971259524c6878b6b1ed4023ada"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a4c451971259524c6878b6b1ed4023ada">NvFlexGetDeviceName</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib)</td></tr> +<tr class="separator:a4c451971259524c6878b6b1ed4023ada"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2ac0a898a565a2cdf13b80acd4a3555c"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a2ac0a898a565a2cdf13b80acd4a3555c">NvFlexGetDeviceAndContext</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, void **device, void **context)</td></tr> +<tr class="separator:a2ac0a898a565a2cdf13b80acd4a3555c"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a898eb8e66a456dd2266c694f29cab600"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a898eb8e66a456dd2266c694f29cab600">NvFlexFlush</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib)</td></tr> +<tr class="separator:a898eb8e66a456dd2266c694f29cab600"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> +<div class="textblock"><p>The main include file for the core Flex solver. </p> +</div><hr/><h2 class="groupheader">Data Structure Documentation</h2> +<a name="struct_nv_flex_params" id="struct_nv_flex_params"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">struct NvFlexParams</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"><p>Simulation parameters for a solver </p> +</div><table class="fieldtable"> +<tr><th colspan="3">Data Fields</th></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a572c9bf93128466e27d57f225f4d0188"></a>int</td> +<td class="fieldname"> +numIterations</td> +<td class="fielddoc"> +Number of solver iterations to perform per-substep. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a482a7c3b197c4df656e9509fbd04032c"></a>float</td> +<td class="fieldname"> +gravity[3]</td> +<td class="fielddoc"> +Constant acceleration applied to all particles. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="aa6eddaa3a6eb35917c093dcabf69a200"></a>float</td> +<td class="fieldname"> +radius</td> +<td class="fielddoc"> +The maximum interaction radius for particles. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ab7c54d6c0b3d3595780e5179bf62ebc4"></a>float</td> +<td class="fieldname"> +solidRestDistance</td> +<td class="fielddoc"> +The distance non-fluid particles attempt to maintain from each other, must be in the range (0, radius]. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ad019ad1901bc33d43e3a60df0dfe9b09"></a>float</td> +<td class="fieldname"> +fluidRestDistance</td> +<td class="fielddoc"> +The distance fluid particles are spaced at the rest density, must be in the range (0, radius], for fluids this should generally be 50-70% of mRadius, for rigids this can simply be the same as the particle radius. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a27a185172ad1951d40c476ade8307068"></a>float</td> +<td class="fieldname"> +dynamicFriction</td> +<td class="fielddoc"> +Coefficient of friction used when colliding against shapes. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="af0a34fd0cdf686022650be9f895cbf2f"></a>float</td> +<td class="fieldname"> +staticFriction</td> +<td class="fielddoc"> +Coefficient of static friction used when colliding against shapes. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="af7a56fc54644e7020e105f2ff41dfb60"></a>float</td> +<td class="fieldname"> +particleFriction</td> +<td class="fielddoc"> +Coefficient of friction used when colliding particles. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="afc306cb48c313ee518461d60c1014485"></a>float</td> +<td class="fieldname"> +restitution</td> +<td class="fielddoc"> +Coefficient of restitution used when colliding against shapes, particle collisions are always inelastic. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a8114a049f5e16f7d1b960f3ac4993fdb"></a>float</td> +<td class="fieldname"> +adhesion</td> +<td class="fielddoc"> +Controls how strongly particles stick to surfaces they hit, default 0.0, range [0.0, +inf]. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a533a78227b462a268c905f9c307c4bd6"></a>float</td> +<td class="fieldname"> +sleepThreshold</td> +<td class="fielddoc"> +Particles with a velocity magnitude < this threshold will be considered fixed. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ab003c023dde289dee075c49db022ccaf"></a>float</td> +<td class="fieldname"> +maxSpeed</td> +<td class="fielddoc"> +The magnitude of particle velocity will be clamped to this value at the end of each step. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a0def9c3ceff57bbae5bcec15f6d64b36"></a>float</td> +<td class="fieldname"> +maxAcceleration</td> +<td class="fielddoc"> +The magnitude of particle acceleration will be clamped to this value at the end of each step (limits max velocity change per-second), useful to avoid popping due to large interpenetrations. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ab98a2aba477ab4d4178bf677852bf544"></a>float</td> +<td class="fieldname"> +shockPropagation</td> +<td class="fielddoc"> +Artificially decrease the mass of particles based on height from a fixed reference point, this makes stacks and piles converge faster. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="aeff62427426510eeb1cf5625e14ff585"></a>float</td> +<td class="fieldname"> +dissipation</td> +<td class="fielddoc"> +Damps particle velocity based on how many particle contacts it has. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a6198445df7f341ec75f37e1dfb44830c"></a>float</td> +<td class="fieldname"> +damping</td> +<td class="fielddoc"> +Viscous drag force, applies a force proportional, and opposite to the particle velocity. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="aafb92c4fa45ce9614cdfd349b3722c8a"></a>float</td> +<td class="fieldname"> +wind[3]</td> +<td class="fielddoc"> +Constant acceleration applied to particles that belong to dynamic triangles, drag needs to be > 0 for wind to affect triangles. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a7043181449aebf540351d1d2f785cf4a"></a>float</td> +<td class="fieldname"> +drag</td> +<td class="fielddoc"> +Drag force applied to particles belonging to dynamic triangles, proportional to velocity^2*area in the negative velocity direction. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="af9bb710afb22ec5ed50679aef8717777"></a>float</td> +<td class="fieldname"> +lift</td> +<td class="fielddoc"> +Lift force applied to particles belonging to dynamic triangles, proportional to velocity^2*area in the direction perpendicular to velocity and (if possible), parallel to the plane normal. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a8f0ee62a14387dd5b5a4e8c6bc429140"></a>bool</td> +<td class="fieldname"> +fluid</td> +<td class="fielddoc"> +If true then particles with phase 0 are considered fluid particles and interact using the position based fluids method. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a3ef4d1035530c3583bdf983c7e62b472"></a>float</td> +<td class="fieldname"> +cohesion</td> +<td class="fielddoc"> +Control how strongly particles hold each other together, default: 0.025, range [0.0, +inf]. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a5628f890f4ae070e405feaf1f81a7b85"></a>float</td> +<td class="fieldname"> +surfaceTension</td> +<td class="fielddoc"> +Controls how strongly particles attempt to minimize surface area, default: 0.0, range: [0.0, +inf]. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a40f452b4edbf11b793f31286a0ae270e"></a>float</td> +<td class="fieldname"> +viscosity</td> +<td class="fielddoc"> +Smoothes particle velocities using XSPH viscosity. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ae763dd9bfcfa4092c0165a506e32e18b"></a>float</td> +<td class="fieldname"> +vorticityConfinement</td> +<td class="fielddoc"> +Increases vorticity by applying rotational forces to particles. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a608af97e77a912e959b0e825082a9cd6"></a>float</td> +<td class="fieldname"> +anisotropyScale</td> +<td class="fielddoc"> +Control how much anisotropy is present in resulting ellipsoids for rendering, if zero then anisotropy will not be calculated, see <a class="el" href="_nv_flex_8h.html#ae28167c680ad56dcff600ce0a223cec5">NvFlexGetAnisotropy()</a> </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ab136ae1511a39ef570c010f321eff206"></a>float</td> +<td class="fieldname"> +anisotropyMin</td> +<td class="fielddoc"> +Clamp the anisotropy scale to this fraction of the radius. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a5e37444b8c96e0880a428d9ea58dbf54"></a>float</td> +<td class="fieldname"> +anisotropyMax</td> +<td class="fielddoc"> +Clamp the anisotropy scale to this fraction of the radius. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ac017e05107d0362d3d03a14eaadf0657"></a>float</td> +<td class="fieldname"> +smoothing</td> +<td class="fielddoc"> +Control the strength of Laplacian smoothing in particles for rendering, if zero then smoothed positions will not be calculated, see <a class="el" href="_nv_flex_8h.html#abfa62e01c4f4511d3f6a00ab6a0f257a">NvFlexGetSmoothParticles()</a> </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a3f93fba688338576ff3258b034525dc5"></a>float</td> +<td class="fieldname"> +solidPressure</td> +<td class="fielddoc"> +Add pressure from solid surfaces to particles. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a05f92015449662f5a2f5d5e9ecdc2c6e"></a>float</td> +<td class="fieldname"> +freeSurfaceDrag</td> +<td class="fielddoc"> +Drag force applied to boundary fluid particles. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ae2e480822cc06ec249ee2557f6cc8ee1"></a>float</td> +<td class="fieldname"> +buoyancy</td> +<td class="fielddoc"> +Gravity is scaled by this value for fluid particles. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="acdde802d58e1558c03e449e04ae33f15"></a>float</td> +<td class="fieldname"> +diffuseThreshold</td> +<td class="fielddoc"> +Particles with kinetic energy + divergence above this threshold will spawn new diffuse particles. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a5be673031b100c3861fd9eb824fcf00f"></a>float</td> +<td class="fieldname"> +diffuseBuoyancy</td> +<td class="fielddoc"> +Scales force opposing gravity that diffuse particles receive. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a4bf0ccff128c165560dba52afb748d7e"></a>float</td> +<td class="fieldname"> +diffuseDrag</td> +<td class="fielddoc"> +Scales force diffuse particles receive in direction of neighbor fluid particles. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a7ade7491cd0693a6d7c5e88a99298378"></a>int</td> +<td class="fieldname"> +diffuseBallistic</td> +<td class="fielddoc"> +The number of neighbors below which a diffuse particle is considered ballistic. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a7bed2ff24c30c76aed0923809fc16d8c"></a>float</td> +<td class="fieldname"> +diffuseSortAxis[3]</td> +<td class="fielddoc"> +Diffuse particles will be sorted by depth along this axis if non-zero. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a469950744e0b7222969762a89b992255"></a>float</td> +<td class="fieldname"> +diffuseLifetime</td> +<td class="fielddoc"> +Time in seconds that a diffuse particle will live for after being spawned, particles will be spawned with a random lifetime in the range [0, diffuseLifetime]. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a3a1f5e2ba6c8cad0bc3f3eebd27415f0"></a>float</td> +<td class="fieldname"> +plasticThreshold</td> +<td class="fielddoc"> +Particles belonging to rigid shapes that move with a position delta magnitude > threshold will be permanently deformed in the rest pose. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a42346069505d3bba70bcdf0a94f0615c"></a>float</td> +<td class="fieldname"> +plasticCreep</td> +<td class="fielddoc"> +Controls the rate at which particles in the rest pose are deformed for particles passing the deformation threshold. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a55bf1f547086b8e469f2c3b20c9ae39d"></a>float</td> +<td class="fieldname"> +collisionDistance</td> +<td class="fielddoc"> +Distance particles maintain against shapes, note that for robust collision against triangle meshes this distance should be greater than zero. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="aeecd11525503649b579ae262b671fbc8"></a>float</td> +<td class="fieldname"> +particleCollisionMargin</td> +<td class="fielddoc"> +Increases the radius used during neighbor finding, this is useful if particles are expected to move significantly during a single step to ensure contacts aren't missed on subsequent iterations. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a0e4cb2f91d3b7d122000d36a7d67ab81"></a>float</td> +<td class="fieldname"> +shapeCollisionMargin</td> +<td class="fielddoc"> +Increases the radius used during contact finding against kinematic shapes. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ae54ff0cacfedd4333aa1a1f9b9291906"></a>float</td> +<td class="fieldname"> +planes[8][4]</td> +<td class="fielddoc"> +Collision planes in the form ax + by + cz + d = 0. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ab4f2eb16c8aba6371fbae51a991eaaa5"></a>int</td> +<td class="fieldname"> +numPlanes</td> +<td class="fielddoc"> +Num collision planes. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ac2f8dff9857a86683aa6e55c058888d7"></a><a class="el" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3b">NvFlexRelaxationMode</a></td> +<td class="fieldname"> +relaxationMode</td> +<td class="fielddoc"> +How the relaxation is applied inside the solver. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a8a1b3c24aa73606bcd47a72473db9629"></a>float</td> +<td class="fieldname"> +relaxationFactor</td> +<td class="fielddoc"> +Control the convergence rate of the parallel solver, default: 1, values greater than 1 may lead to instability. </td></tr> +</table> + +</div> +</div> +<a name="struct_nv_flex_timers" id="struct_nv_flex_timers"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">struct NvFlexTimers</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"><p>Time spent in each section of the solver update, times in GPU seconds, see <a class="el" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver()</a> </p> +</div><table class="fieldtable"> +<tr><th colspan="3">Data Fields</th></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="aaf8baa00e709ff8fd40d114f00bee0b6"></a>float</td> +<td class="fieldname"> +predict</td> +<td class="fielddoc"> +Time spent in prediction. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="aba34bc2bc8736e3a0cf18a7a6b56ff68"></a>float</td> +<td class="fieldname"> +createCellIndices</td> +<td class="fielddoc"> +Time spent creating grid indices. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ae45cb18deec2db8ff44d181e80f24695"></a>float</td> +<td class="fieldname"> +sortCellIndices</td> +<td class="fielddoc"> +Time spent sorting grid indices. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a98b4df3721709c862ef5d09edcc6d4c3"></a>float</td> +<td class="fieldname"> +createGrid</td> +<td class="fielddoc"> +Time spent creating grid. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a6071050991cf71a8d9ff28ea968479af"></a>float</td> +<td class="fieldname"> +reorder</td> +<td class="fielddoc"> +Time spent reordering particles. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ac1f3c3a1eeeb57cf5b20d030a788e25c"></a>float</td> +<td class="fieldname"> +collideParticles</td> +<td class="fielddoc"> +Time spent finding particle neighbors. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ae4203fb9cf4772c3186f96cc2d9f6ea8"></a>float</td> +<td class="fieldname"> +collideShapes</td> +<td class="fielddoc"> +Time spent colliding convex shapes. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="afc20d27121f49b61be9cc6bd4c25f547"></a>float</td> +<td class="fieldname"> +collideTriangles</td> +<td class="fielddoc"> +Time spent colliding triangle shapes. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="aaa36ba5ee44e34e762167fb0b8b3292e"></a>float</td> +<td class="fieldname"> +collideFields</td> +<td class="fielddoc"> +Time spent colliding signed distance field shapes. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a49f7117a457a716e7790904209f68707"></a>float</td> +<td class="fieldname"> +calculateDensity</td> +<td class="fielddoc"> +Time spent calculating fluid density. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="abe52b62e7af361f387d67414b9e2cf9b"></a>float</td> +<td class="fieldname"> +solveDensities</td> +<td class="fielddoc"> +Time spent solving density constraints. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a4d10188e917ae045e0e903f3db1c638d"></a>float</td> +<td class="fieldname"> +solveVelocities</td> +<td class="fielddoc"> +Time spent solving velocity constraints. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="abdd60b0a83674283d09b4897fdd637a2"></a>float</td> +<td class="fieldname"> +solveShapes</td> +<td class="fielddoc"> +Time spent solving rigid body constraints. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a57e4d27b0aa8774e479fa66d65079f78"></a>float</td> +<td class="fieldname"> +solveSprings</td> +<td class="fielddoc"> +Time spent solving distance constraints. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a215e06106ec0cdbbcd405055a4535d1d"></a>float</td> +<td class="fieldname"> +solveContacts</td> +<td class="fielddoc"> +Time spent solving contact constraints. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a75eade1512d023cb19da5b7ebbad10f3"></a>float</td> +<td class="fieldname"> +solveInflatables</td> +<td class="fielddoc"> +Time spent solving pressure constraints. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="afc5d58e7f591213c3fe1c31b4d440eb6"></a>float</td> +<td class="fieldname"> +applyDeltas</td> +<td class="fielddoc"> +Time spent adding position deltas to particles. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="af9b72d2909ef335b12a46cdbd4b71f57"></a>float</td> +<td class="fieldname"> +calculateAnisotropy</td> +<td class="fielddoc"> +Time spent calculating particle anisotropy for fluid. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a2ff723870a6eba26d9f3bb7e5250b27f"></a>float</td> +<td class="fieldname"> +updateDiffuse</td> +<td class="fielddoc"> +Time spent updating diffuse particles. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a8cb34cbcf9def6817d6d5d3c07177052"></a>float</td> +<td class="fieldname"> +updateTriangles</td> +<td class="fielddoc"> +Time spent updating dynamic triangles. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a1a1e69f26e02e8b3fca1d3636a7f3f13"></a>float</td> +<td class="fieldname"> +updateNormals</td> +<td class="fielddoc"> +Time spent updating vertex normals. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a9d825db54bc9a0bca998b3654db3b20e"></a>float</td> +<td class="fieldname"> +finalize</td> +<td class="fielddoc"> +Time spent finalizing state. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a2f85189cbc3014b73164cf8c4eb87e0a"></a>float</td> +<td class="fieldname"> +updateBounds</td> +<td class="fielddoc"> +Time spent updating particle bounds. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a3c4d2aa395ff8d0f70a6380448943be2"></a>float</td> +<td class="fieldname"> +total</td> +<td class="fielddoc"> +Sum of all timers above. </td></tr> +</table> + +</div> +</div> +<a name="struct_nv_flex_solver_callback_params" id="struct_nv_flex_solver_callback_params"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">struct NvFlexSolverCallbackParams</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"><p>Structure containing pointers to the internal solver data that is passed to each registered solver callback</p> +<dl class="section remark"><dt>Remarks</dt><dd>Pointers to internal data are only valid for the lifetime of the callback and should not be stored. However, it is safe to launch kernels and memory transfers using the device pointers.</dd> +<dd> +Because Flex re-orders particle data internally for performance, the particle data in the callback is not in the same order as it was provided to the API. The callback provides arrays which map original particle indices to sorted positions and vice-versa.</dd> +<dd> +Particle positions may be modified during any callback, but velocity modifications should only occur during the eNvFlexStageUpdateEnd stage, otherwise any velocity changes will be discarded. </dd></dl> +</div><table class="fieldtable"> +<tr><th colspan="3">Data Fields</th></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a3974e1e608d9f532d5520dc158b47903"></a><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *</td> +<td class="fieldname"> +solver</td> +<td class="fielddoc"> +Pointer to the solver that the callback is registered to. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a5b9af9cf4d889b4772cb61cefda92a87"></a>void *</td> +<td class="fieldname"> +userData</td> +<td class="fielddoc"> +Pointer to the user data provided to <a class="el" href="_nv_flex_8h.html#ac5427457488ab3f2de91cf65335dda08">NvFlexRegisterSolverCallback()</a> </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a8ed42f9bd016cbcef45c96b5b32ca609"></a>float *</td> +<td class="fieldname"> +particles</td> +<td class="fielddoc"> +Device pointer to the active particle basic data in the form x,y,z,1/m. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ac48a490fa3d62cc678c309dd4b8cbf18"></a>float *</td> +<td class="fieldname"> +velocities</td> +<td class="fielddoc"> +Device pointer to the active particle velocity data in the form x,y,z,w (last component is not used) </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a9e5f943053d43d7e1a6b149babe4fe44"></a>int *</td> +<td class="fieldname"> +phases</td> +<td class="fielddoc"> +Device pointer to the active particle phase data. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ac32019f7dd1f30ab8a7391a417ed02c9"></a>int</td> +<td class="fieldname"> +numActive</td> +<td class="fielddoc"> +The number of active particles returned, the callback data only return pointers to active particle data, this is the same as <a class="el" href="_nv_flex_8h.html#a2345372dea2ad4f043153a84e7a2c407">NvFlexGetActiveCount()</a> </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a843360ebf23cd00e5eff72d19e796dd9"></a>float</td> +<td class="fieldname"> +dt</td> +<td class="fielddoc"> +The per-update time-step, this is the value passed to <a class="el" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver()</a> </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="abe564dbbbd4957542322b60d77a70e29"></a>const int *</td> +<td class="fieldname"> +originalToSortedMap</td> +<td class="fielddoc"> +Device pointer that maps the sorted callback data to the original position given by SetParticles() </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a9b65813d2a2d3f99db162d39a62481f8"></a>const int *</td> +<td class="fieldname"> +sortedToOriginalMap</td> +<td class="fielddoc"> +Device pointer that maps the original particle index to the index in the callback data structure. </td></tr> +</table> + +</div> +</div> +<a name="struct_nv_flex_init_desc" id="struct_nv_flex_init_desc"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">struct NvFlexInitDesc</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"><p>Descriptor used to initialize Flex </p> +</div><table class="fieldtable"> +<tr><th colspan="3">Data Fields</th></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a5890b9e46d626cfa19994976ea53c52e"></a>int</td> +<td class="fieldname"> +deviceIndex</td> +<td class="fielddoc"> +The GPU device index that should be used, if there is already a CUDA context on the calling thread then this parameter will be ignored and the active CUDA context used. Otherwise a new context will be created using the suggested device ordinal. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a23b8779c1516647ef5ed7f8010d619ff"></a>bool</td> +<td class="fieldname"> +enableExtensions</td> +<td class="fielddoc"> +Enable or disable NVIDIA/AMD extensions in DirectX, can lead to improved performance. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a7e760844341b78a547ca4e29abf48806"></a>void *</td> +<td class="fieldname"> +renderDevice</td> +<td class="fielddoc"> +Direct3D device to use for simulation, if none is specified a new device and context will be created. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="abf304d5c1f8f041fa46a2bfb0bdf56fe"></a>void *</td> +<td class="fieldname"> +renderContext</td> +<td class="fielddoc"> +Direct3D context to use for simulation, if none is specified a new context will be created, in DirectX 12 this should be a pointer to the ID3D12CommandQueue where compute operations will take place. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="aeeeaf91dad0804d1dd3125e592a3260b"></a><a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252">NvFlexComputeType</a></td> +<td class="fieldname"> +computeType</td> +<td class="fielddoc"> +Set to eNvFlexD3D11 if DirectX 11 should be used, eNvFlexD3D12 for DirectX 12, this must match the libraries used to link the application. </td></tr> +</table> + +</div> +</div> +<a name="struct_nv_flex_sphere_geometry" id="struct_nv_flex_sphere_geometry"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">struct NvFlexSphereGeometry</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"><p>A basic sphere shape with origin at the center of the sphere and radius </p> +</div><table class="fieldtable"> +<tr><th colspan="3">Data Fields</th></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a7a6e24c01235abc364ed12570ab15f84"></a>float</td> +<td class="fieldname"> +radius</td> +<td class="fielddoc"> +</td></tr> +</table> + +</div> +</div> +<a name="struct_nv_flex_capsule_geometry" id="struct_nv_flex_capsule_geometry"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">struct NvFlexCapsuleGeometry</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"><p>A collision capsule extends along the x-axis with its local origin at the center of the capsule </p> +</div><table class="fieldtable"> +<tr><th colspan="3">Data Fields</th></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a1241ff3522eafac4b402370a7a6525d8"></a>float</td> +<td class="fieldname"> +radius</td> +<td class="fielddoc"> +</td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="aef1b5bceccca709ebb782d2ea8a61dc9"></a>float</td> +<td class="fieldname"> +halfHeight</td> +<td class="fielddoc"> +</td></tr> +</table> + +</div> +</div> +<a name="struct_nv_flex_box_geometry" id="struct_nv_flex_box_geometry"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">struct NvFlexBoxGeometry</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"><p>A simple box with interior [-halfHeight, +halfHeight] along each dimension </p> +</div><table class="fieldtable"> +<tr><th colspan="3">Data Fields</th></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ab669c404607156367b09878870dbe30c"></a>float</td> +<td class="fieldname"> +halfExtents[3]</td> +<td class="fielddoc"> +</td></tr> +</table> + +</div> +</div> +<a name="struct_nv_flex_convex_mesh_geometry" id="struct_nv_flex_convex_mesh_geometry"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">struct NvFlexConvexMeshGeometry</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"><p>A convex mesh instance with non-uniform scale </p> +</div><table class="fieldtable"> +<tr><th colspan="3">Data Fields</th></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a800620cc4888bbe5696c5f0e19b22bb9"></a>float</td> +<td class="fieldname"> +scale[3]</td> +<td class="fielddoc"> +</td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="abdc984644770fec15d7af740c9730186"></a><a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a></td> +<td class="fieldname"> +mesh</td> +<td class="fielddoc"> +</td></tr> +</table> + +</div> +</div> +<a name="struct_nv_flex_triangle_mesh_geometry" id="struct_nv_flex_triangle_mesh_geometry"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">struct NvFlexTriangleMeshGeometry</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"><p>A scaled triangle mesh instance with non-uniform scale </p> +</div><table class="fieldtable"> +<tr><th colspan="3">Data Fields</th></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ab6e2aa06b69e92cbd3b2bca19f18e794"></a>float</td> +<td class="fieldname"> +scale[3]</td> +<td class="fielddoc"> +The scale of the object from local space to world space. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="af6a50e64591866ae2390a57e3342566c"></a><a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a></td> +<td class="fieldname"> +mesh</td> +<td class="fielddoc"> +A triangle mesh pointer created by <a class="el" href="_nv_flex_8h.html#afdda5a5210938a1e8a7c3a8218ad468e">NvFlexCreateTriangleMesh()</a> </td></tr> +</table> + +</div> +</div> +<a name="struct_nv_flex_s_d_f_geometry" id="struct_nv_flex_s_d_f_geometry"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">struct NvFlexSDFGeometry</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"><p>A scaled signed distance field instance, the local origin of the SDF is at corner of the field corresponding to the first voxel. The field is mapped to the local space volume [0, 1] in each dimension. </p> +</div><table class="fieldtable"> +<tr><th colspan="3">Data Fields</th></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a0008a52f6ae1e17c436b095549bf1c78"></a>float</td> +<td class="fieldname"> +scale</td> +<td class="fielddoc"> +Uniform scale of SDF, this corresponds to the world space width of the shape. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a0a6936f3cb0544ad624f1dea6b7eb50c"></a><a class="el" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlexDistanceFieldId</a></td> +<td class="fieldname"> +field</td> +<td class="fielddoc"> +A signed distance field pointer created by <a class="el" href="_nv_flex_8h.html#a5c28caf6d5d513c5adacd4fbc782f308">NvFlexCreateDistanceField()</a> </td></tr> +</table> + +</div> +</div> +<a name="union_nv_flex_collision_geometry" id="union_nv_flex_collision_geometry"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">union NvFlexCollisionGeometry</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"><p>This union allows collision geometry to be sent to Flex as a flat array of 16-byte data structures, the shape flags array specifies the type for each shape, see <a class="el" href="_nv_flex_8h.html#aea4e7117722df53dfe44c676496117fa">NvFlexSetShapes()</a>. </p> +</div><table class="fieldtable"> +<tr><th colspan="3">Data Fields</th></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a0e3c0e02ec7addd25ebb3355a8865bfb"></a><a class="el" href="_nv_flex_8h.html#struct_nv_flex_sphere_geometry">NvFlexSphereGeometry</a></td> +<td class="fieldname"> +sphere</td> +<td class="fielddoc"> +</td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a8ad5aa3c9c9456607de9a2c9f1d0d2c1"></a><a class="el" href="_nv_flex_8h.html#struct_nv_flex_capsule_geometry">NvFlexCapsuleGeometry</a></td> +<td class="fieldname"> +capsule</td> +<td class="fielddoc"> +</td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a53e827707abaf2e03b78c3c88469d7bf"></a><a class="el" href="_nv_flex_8h.html#struct_nv_flex_box_geometry">NvFlexBoxGeometry</a></td> +<td class="fieldname"> +box</td> +<td class="fielddoc"> +</td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ae701fdcc0e7bf26c1dfc54d400ffb3d2"></a><a class="el" href="_nv_flex_8h.html#struct_nv_flex_convex_mesh_geometry">NvFlexConvexMeshGeometry</a></td> +<td class="fieldname"> +convexMesh</td> +<td class="fielddoc"> +</td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a064e3ce30320610d495ba3faa72dc8d6"></a><a class="el" href="_nv_flex_8h.html#struct_nv_flex_triangle_mesh_geometry">NvFlexTriangleMeshGeometry</a></td> +<td class="fieldname"> +triMesh</td> +<td class="fielddoc"> +</td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ac0049037dcff7a769030acd567eac6cd"></a><a class="el" href="_nv_flex_8h.html#struct_nv_flex_s_d_f_geometry">NvFlexSDFGeometry</a></td> +<td class="fieldname"> +sdf</td> +<td class="fielddoc"> +</td></tr> +</table> + +</div> +</div> +<a name="struct_nv_flex_detail_timer" id="struct_nv_flex_detail_timer"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">struct NvFlexDetailTimer</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"><p>Holds the execution time for a specfic shader </p> +</div><table class="fieldtable"> +<tr><th colspan="3">Data Fields</th></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a3ddbb30a2fde4a2e9ccec7854300b1d4"></a>char *</td> +<td class="fieldname"> +name</td> +<td class="fielddoc"> +</td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a83f6117fe98bc6426027a9b784fd737c"></a>float</td> +<td class="fieldname"> +time</td> +<td class="fielddoc"> +</td></tr> +</table> + +</div> +</div> +<h2 class="groupheader">Typedef Documentation</h2> +<a class="anchor" id="a3078976e98f370a9fbdb11db80f1f318"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">typedef struct <a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> <a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Opaque type representing a library that can create FlexSolvers, FlexTriangleMeshes, and NvFlexBuffers </p> + +</div> +</div> +<a class="anchor" id="afaeb57f4ee7e54b1ae1b912a465ed39e"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">typedef struct <a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> <a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Opaque type representing a collection of particles and constraints </p> + +</div> +</div> +<a class="anchor" id="a50a3933d3f7b77d0500c702b1fa9ba9a"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">typedef struct <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Opaque type representing a data buffer, type and contents depends on usage, see <a class="el" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer()</a> </p> + +</div> +</div> +<a class="anchor" id="abe6f00c9b94debbf7c181082a14076d5"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">typedef void(* NvFlexErrorCallback) (<a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfca">NvFlexErrorSeverity</a> type, const char *msg, const char *file, int line)</td> + </tr> + </table> +</div><div class="memdoc"> +<p>Function pointer type for error reporting callbacks </p> + +</div> +</div> +<a class="anchor" id="a2aea4c3d772b4dbccb7dd9ba37c1bdc0"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">typedef unsigned int <a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a></td> + </tr> + </table> +</div><div class="memdoc"> +<p>An opaque type representing a static triangle mesh in the solver </p> + +</div> +</div> +<a class="anchor" id="a56e990c5bfbc89677988cbf2471c0ade"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">typedef unsigned int <a class="el" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlexDistanceFieldId</a></td> + </tr> + </table> +</div><div class="memdoc"> +<p>An opaque type representing a signed distance field collision shape in the solver. </p> + +</div> +</div> +<a class="anchor" id="a7ab5aa68da7ca1f69211a900f1a1c586"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">typedef unsigned int <a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a></td> + </tr> + </table> +</div><div class="memdoc"> +<p>An opaque type representing a convex mesh collision shape in the solver. Convex mesh shapes may consist of up to 64 planes of the form a*x + b*y + c*z + d = 0, particles will be constrained to the outside of the shape. </p> + +</div> +</div> +<h2 class="groupheader">Enumeration Type Documentation</h2> +<a class="anchor" id="a6541b33eaca7b2323e73b30cea34d16c"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16c">NvFlexMapFlags</a></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Controls behavior of <a class="el" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap()</a> </p> +<table class="fieldtable"> +<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6"></a>eNvFlexMapWait </td><td class="fielddoc"> +<p>Calling thread will be blocked until buffer is ready for access, default. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a6541b33eaca7b2323e73b30cea34d16ca1bd450ab65ccc06288fae95e23d5e6f1"></a>eNvFlexMapDoNotWait </td><td class="fielddoc"> +<p>Calling thread will check if buffer is ready for access, if not ready then the method will return NULL immediately. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a6541b33eaca7b2323e73b30cea34d16caa01c2dce3aa1e0d9d151060e1786c706"></a>eNvFlexMapDiscard </td><td class="fielddoc"> +<p>Buffer contents will be discarded, this allows for efficent buffer reuse. </p> +</td></tr> +</table> + +</div> +</div> +<a class="anchor" id="a169e4c126acf46bdebf76c36a44deca3"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3">NvFlexBufferType</a></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Controls memory space of a NvFlexBuffer, see <a class="el" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer()</a> </p> +<table class="fieldtable"> +<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8"></a>eNvFlexBufferHost </td><td class="fielddoc"> +<p>Host mappable buffer, pinned memory on CUDA, staging buffer on DX. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a169e4c126acf46bdebf76c36a44deca3a103255fa795b55a7f430a41493002576"></a>eNvFlexBufferDevice </td><td class="fielddoc"> +<p>Device memory buffer, mapping this on CUDA will return a device memory pointer, and will return a buffer pointer on DX. </p> +</td></tr> +</table> + +</div> +</div> +<a class="anchor" id="a46f5d35902f7da40628247175a174f3b"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3b">NvFlexRelaxationMode</a></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Controls the relaxation method used by the solver to ensure convergence </p> +<table class="fieldtable"> +<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a46f5d35902f7da40628247175a174f3ba33711a4b466d606d68dee43918f819db"></a>eNvFlexRelaxationGlobal </td><td class="fielddoc"> +<p>The relaxation factor is a fixed multiplier on each constraint's position delta. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a46f5d35902f7da40628247175a174f3ba858afe9529e908c2bc8ce92da8943b7c"></a>eNvFlexRelaxationLocal </td><td class="fielddoc"> +<p>The relaxation factor is a fixed multiplier on each constraint's delta divided by the particle's constraint count, convergence will be slower but more reliable. </p> +</td></tr> +</table> + +</div> +</div> +<a class="anchor" id="a5ad2a7745fcb4d4afd5b5f1bda074644"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644">NvFlexPhase</a></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Flags that control the a particle's behavior and grouping, use <a class="el" href="_nv_flex_8h.html#af53fa9d7caef50db346475065504848d">NvFlexMakePhase()</a> to construct a valid 32bit phase identifier </p> +<table class="fieldtable"> +<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a5ad2a7745fcb4d4afd5b5f1bda074644ad108f6ebf28346813cfd3602d984bb32"></a>eNvFlexPhaseGroupMask </td><td class="fielddoc"> +<p>Low 24 bits represent the particle group for controlling collisions. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a5ad2a7745fcb4d4afd5b5f1bda074644a453a23cc8e9d2e6097b5be187f3c6977"></a>eNvFlexPhaseSelfCollide </td><td class="fielddoc"> +<p>If set this particle will interact with particles of the same group. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a5ad2a7745fcb4d4afd5b5f1bda074644a76a62d3a5df428f18e01f8b37573a7b1"></a>eNvFlexPhaseSelfCollideFilter </td><td class="fielddoc"> +<p>If set this particle will ignore collisions with particles closer than the radius in the rest pose, this flag should not be specified unless valid rest positions have been specified using <a class="el" href="_nv_flex_8h.html#aa457096286567a37d4f1d5f4857d9296">NvFlexSetRestParticles()</a> </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a5ad2a7745fcb4d4afd5b5f1bda074644a1728772beb1746ace4c549b2ed8f1d74"></a>eNvFlexPhaseFluid </td><td class="fielddoc"> +<p>If set this particle will generate fluid density constraints for its overlapping neighbors. </p> +</td></tr> +</table> + +</div> +</div> +<a class="anchor" id="ab4435b3857752360375fe52fc992cfca"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfca">NvFlexErrorSeverity</a></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Flex error return codes </p> +<table class="fieldtable"> +<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="ab4435b3857752360375fe52fc992cfcaa8aed6496f033604148138299fa075edd"></a>eNvFlexLogError </td><td class="fielddoc"> +<p>Error messages. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="ab4435b3857752360375fe52fc992cfcaa03d239332ae87f46270855dd06b6e58f"></a>eNvFlexLogInfo </td><td class="fielddoc"> +<p>Information messages. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="ab4435b3857752360375fe52fc992cfcaa5538835c4767004ba5fd443ada08ea61"></a>eNvFlexLogWarning </td><td class="fielddoc"> +<p>Warning messages. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="ab4435b3857752360375fe52fc992cfcaa77b51759e33d60b2caf327bb4835351e"></a>eNvFlexLogDebug </td><td class="fielddoc"> +<p>Used only in debug version of dll. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="ab4435b3857752360375fe52fc992cfcaa8feff72c0b0391e8adf3ddb6c39ef10e"></a>eNvFlexLogAll </td><td class="fielddoc"> +<p>All log types. </p> +</td></tr> +</table> + +</div> +</div> +<a class="anchor" id="a4f80c8bcfa6de99a52983adb13d80db9"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9">NvFlexSolverCallbackStage</a></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Defines the set of stages at which callbacks may be registered </p> +<table class="fieldtable"> +<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a4f80c8bcfa6de99a52983adb13d80db9a9f3914fdb03915a14ebe55a2c730e7ff"></a>eNvFlexStageIterationStart </td><td class="fielddoc"> +<p>Called at the beginning of each constraint iteration. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a4f80c8bcfa6de99a52983adb13d80db9ab75a912c3990b0fbd6b06a6741a20e69"></a>eNvFlexStageIterationEnd </td><td class="fielddoc"> +<p>Called at the end of each constraint iteration. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a4f80c8bcfa6de99a52983adb13d80db9a79ce9005dbc92198a1f180c6afde6a44"></a>eNvFlexStageSubstepBegin </td><td class="fielddoc"> +<p>Called at the beginning of each substep after the prediction step has been completed. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a4f80c8bcfa6de99a52983adb13d80db9a6f13e2ebdbf21f8c8ebcfe1ac9160586"></a>eNvFlexStageSubstepEnd </td><td class="fielddoc"> +<p>Called at the end of each substep after the velocity has been updated by the constraints. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a4f80c8bcfa6de99a52983adb13d80db9a260340ba9071892bd8795c3b29289806"></a>eNvFlexStageUpdateEnd </td><td class="fielddoc"> +<p>Called at the end of solver update after the final substep has completed. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a4f80c8bcfa6de99a52983adb13d80db9a1f2e7acff9b3b74922f90240d29fd1b3"></a>eNvFlexStageCount </td><td class="fielddoc"> +<p>Number of stages. </p> +</td></tr> +</table> + +</div> +</div> +<a class="anchor" id="a9b2d3dc5ac42011aeec4e13be2e14252"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252">NvFlexComputeType</a></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Defines the different DirectX compute modes that Flex can use </p> +<table class="fieldtable"> +<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a9b2d3dc5ac42011aeec4e13be2e14252ad0c27f7aafdc4fe569722025c8eb2178"></a>eNvFlexCUDA </td><td class="fielddoc"> +<p>Use CUDA compute for Flex, the application must link against the CUDA libraries. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a9b2d3dc5ac42011aeec4e13be2e14252a297a93979a88fda6e6b551dcab5fb3df"></a>eNvFlexD3D11 </td><td class="fielddoc"> +<p>Use DirectX 11 compute for Flex, the application must link against the D3D libraries. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a9b2d3dc5ac42011aeec4e13be2e14252a15e78a7baf13cc7fd73f255ac84f0943"></a>eNvFlexD3D12 </td><td class="fielddoc"> +<p>Use DirectX 12 compute for Flex, the application must link against the D3D libraries. </p> +</td></tr> +</table> + +</div> +</div> +<a class="anchor" id="a0506ae712f846087b8647ea389ac26ba"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26ba">NvFlexCollisionShapeType</a></td> + </tr> + </table> +</div><div class="memdoc"> +<table class="fieldtable"> +<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a0506ae712f846087b8647ea389ac26baae22144512ae098865c6725af16a68ad3"></a>eNvFlexShapeSphere </td><td class="fielddoc"> +<p>A sphere shape, see FlexSphereGeometry. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a0506ae712f846087b8647ea389ac26baa1724c140b583fbf2c11c14a24dd3764a"></a>eNvFlexShapeCapsule </td><td class="fielddoc"> +<p>A capsule shape, see FlexCapsuleGeometry. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a0506ae712f846087b8647ea389ac26baab17c8dd4f9500016b77a9b49de3c48e7"></a>eNvFlexShapeBox </td><td class="fielddoc"> +<p>A box shape, see FlexBoxGeometry. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a0506ae712f846087b8647ea389ac26baaed52f0e803c6745ffc1a5f018a8756ce"></a>eNvFlexShapeConvexMesh </td><td class="fielddoc"> +<p>A convex mesh shape, see FlexConvexMeshGeometry. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a0506ae712f846087b8647ea389ac26baa315488da382a5e9794c83358385f7ae1"></a>eNvFlexShapeTriangleMesh </td><td class="fielddoc"> +<p>A triangle mesh shape, see FlexTriangleMeshGeometry. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a0506ae712f846087b8647ea389ac26baa1fd78f8694b954f8d12fe7d911f17180"></a>eNvFlexShapeSDF </td><td class="fielddoc"> +<p>A signed distance field shape, see FlexSDFGeometry. </p> +</td></tr> +</table> + +</div> +</div> +<a class="anchor" id="a31c31ea4f96cd4fdadc6b7317691304c"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304c">NvFlexCollisionShapeFlags</a></td> + </tr> + </table> +</div><div class="memdoc"> +<table class="fieldtable"> +<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a31c31ea4f96cd4fdadc6b7317691304cae8a10737948abf6973f0f1d66bae7ef8"></a>eNvFlexShapeFlagTypeMask </td><td class="fielddoc"> +<p>Lower 3 bits holds the type of the collision shape. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a31c31ea4f96cd4fdadc6b7317691304cadc6740cf6d829fba159d92e43ffb5992"></a>eNvFlexShapeFlagDynamic </td><td class="fielddoc"> +<p>Indicates the shape is dynamic and should have lower priority over static collision shapes. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a31c31ea4f96cd4fdadc6b7317691304ca409215fa9b917f2d0830a66bd11b3ff8"></a>eNvFlexShapeFlagTrigger </td><td class="fielddoc"> +<p>Indicates that the shape is a trigger volume, this means it will not perform any collision response, but will be reported in the contacts array (see <a class="el" href="_nv_flex_8h.html#a7edac9cf450917147b83e98f5cb09f5d">NvFlexGetContacts()</a>) </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a31c31ea4f96cd4fdadc6b7317691304caa1c1225f6b8b2906c83748cfc46b81d9"></a>eNvFlexShapeFlagReserved </td><td class="fielddoc"> +</td></tr> +</table> + +</div> +</div> +<h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="af53fa9d7caef50db346475065504848d"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API int NvFlexMakePhase </td> + <td>(</td> + <td class="paramtype">int </td> + <td class="paramname"><em>group</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>flags</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Generate a bit set for the particle phase, the group should be an integer < 2^24, and the flags should be a combination of FlexPhase enum values </p> + +</div> +</div> +<a class="anchor" id="a687e5ec141948f779faa9183b68cb743"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* NvFlexInit </td> + <td>(</td> + <td class="paramtype">int </td> + <td class="paramname"><em>version</em> = <code>NV_FLEX_VERSION</code>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#abe6f00c9b94debbf7c181082a14076d5">NvFlexErrorCallback</a> </td> + <td class="paramname"><em>errorFunc</em> = <code>0</code>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_init_desc">NvFlexInitDesc</a> * </td> + <td class="paramname"><em>desc</em> = <code>0</code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Initialize library, should be called before any other API function.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">version</td><td>The version number the app is expecting, should almost always be NV_FLEX_VERSION </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">errorFunc</td><td>The callback used for reporting errors. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">desc</td><td>The <a class="el" href="_nv_flex_8h.html#struct_nv_flex_init_desc">NvFlexInitDesc</a> struct defining the device ordinal, D3D device/context and the type of D3D compute being used </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>A pointer to a library instance that can be used to allocate shared object such as triangle meshes, buffers, etc </dd></dl> + +</div> +</div> +<a class="anchor" id="aaf59e45ada57c7f958a8030099cbe211"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexShutdown </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>lib</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Shutdown library, users should manually destroy any previously created solvers to ensure memory is freed before calling this method. If a new CUDA context was created during <a class="el" href="_nv_flex_8h.html#a687e5ec141948f779faa9183b68cb743">NvFlexInit()</a> then it will be destroyed.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library intance to use </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ac25ec5de38c177db51198bb620644d36"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API int NvFlexGetVersion </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Get library version number </p> + +</div> +</div> +<a class="anchor" id="af7f91fa47c779fcd8bee60061de6d31c"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* NvFlexCreateSolver </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>lib</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>maxParticles</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>maxDiffuseParticles</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>maxNeighborsPerParticle</em> = <code>96</code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Create a new particle solver</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">maxParticles</td><td>Maximum number of simulation particles possible for this solver </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">maxDiffuseParticles</td><td>Maximum number of diffuse (non-simulation) particles possible for this solver </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">maxNeighborsPerParticle</td><td>Maximum number of neighbors per particle possible for this solver </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a1d755d7b090f7ed5c4c50d2d3fef1558"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexDestroySolver </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Delete a particle solver</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver pointer created from <a class="el" href="_nv_flex_8h.html#af7f91fa47c779fcd8bee60061de6d31c">NvFlexCreateSolver()</a> </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ae0d57e4fc2b3b51ec08f7da0a28ff343"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* NvFlexGetSolverLibrary </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Return the library associated with a solver</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver created with <a class="el" href="_nv_flex_8h.html#af7f91fa47c779fcd8bee60061de6d31c">NvFlexCreateSolver()</a> </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>A library pointer </dd></dl> + +</div> +</div> +<a class="anchor" id="ac5427457488ab3f2de91cf65335dda08"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API <a class="el" href="struct_nv_flex_solver_callback.html">NvFlexSolverCallback</a> NvFlexRegisterSolverCallback </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="struct_nv_flex_solver_callback.html">NvFlexSolverCallback</a> </td> + <td class="paramname"><em>function</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9">NvFlexSolverCallbackStage</a> </td> + <td class="paramname"><em>stage</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Registers a callback for a solver stage, the callback will be invoked from the same thread that calls <a class="el" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver()</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">function</td><td>A pointer to a function that will be called during the solver update </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">stage</td><td>The stage of the update at which the callback function will be called</td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>The previously registered callback for this slot, this allows multiple users to chain callbacks together </dd></dl> + +</div> +</div> +<a class="anchor" id="ac75370f005fd453fe8a324fe62be1b5c"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexUpdateSolver </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>dt</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>substeps</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">bool </td> + <td class="paramname"><em>enableTimers</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Integrate particle solver forward in time. Below is an example of how to step Flex in the context of a simple game loop:</p> +<div class="fragment"><div class="line"><a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* library = <a class="code" href="_nv_flex_8h.html#a687e5ec141948f779faa9183b68cb743">NvFlexInit</a>();</div> +<div class="line"><a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver = <a class="code" href="_nv_flex_8h.html#af7f91fa47c779fcd8bee60061de6d31c">NvFlexCreateSolver</a>(library);</div> +<div class="line"></div> +<div class="line"><a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* particleBuffer = <a class="code" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer</a>(library, n, <span class="keyword">sizeof</span>(Vec4), <a class="code" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8">eNvFlexBufferHost</a>);</div> +<div class="line"><a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* velocityBuffer = <a class="code" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer</a>(library, n, <span class="keyword">sizeof</span>(Vec4), <a class="code" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8">eNvFlexBufferHost</a>);</div> +<div class="line"><a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* phaseBuffer = <a class="code" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer</a>(library, n, <span class="keyword">sizeof</span>(<span class="keywordtype">int</span>), <a class="code" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8">eNvFlexBufferHost</a>);</div> +<div class="line"></div> +<div class="line"><span class="keywordflow">while</span>(!done)</div> +<div class="line">{</div> +<div class="line"> <span class="comment">// map buffers for reading / writing</span></div> +<div class="line"> float4* particles = (float4*)<a class="code" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap</a>(particles, <a class="code" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">eNvFlexMapWait</a>);</div> +<div class="line"> float3* velocities = (float3*)<a class="code" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap</a>(velocities, <a class="code" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">eNvFlexMapWait</a>);</div> +<div class="line"> <span class="keywordtype">int</span>* phases = (<span class="keywordtype">int</span>*)<a class="code" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap</a>(phases, <a class="code" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">eNvFlexMapWait</a>);</div> +<div class="line"></div> +<div class="line"> <span class="comment">// spawn (user method)</span></div> +<div class="line"> SpawnParticles(particles, velocities, phases);</div> +<div class="line"></div> +<div class="line"> <span class="comment">// render (user method)</span></div> +<div class="line"> RenderParticles(particles, velocities, phases);</div> +<div class="line"></div> +<div class="line"> <span class="comment">// unmap buffers</span></div> +<div class="line"> <a class="code" href="_nv_flex_8h.html#a054cb27646a389ea257d1bbde46a6e97">NvFlexUnmap</a>(particleBuffer);</div> +<div class="line"> <a class="code" href="_nv_flex_8h.html#a054cb27646a389ea257d1bbde46a6e97">NvFlexUnmap</a>(velocityBuffer);</div> +<div class="line"> <a class="code" href="_nv_flex_8h.html#a054cb27646a389ea257d1bbde46a6e97">NvFlexUnmap</a>(phaseBuffer);</div> +<div class="line"></div> +<div class="line"> <span class="comment">// write to device (async)</span></div> +<div class="line"> <a class="code" href="_nv_flex_8h.html#abef057ac89ba5cf1cd71f0084f9313de">NvFlexSetParticles</a>(particleBuffer, n);</div> +<div class="line"> <a class="code" href="_nv_flex_8h.html#afe09e63d22c5156fe24cd2d2bc069c04">NvFlexSetVelocities</a>(velocityBuffer, n);</div> +<div class="line"> <a class="code" href="_nv_flex_8h.html#a3117f92571613709936291c48414e521">NvFlexSetPhases</a>(phaseBuffer, n);</div> +<div class="line"></div> +<div class="line"> <span class="comment">// tick</span></div> +<div class="line"> <a class="code" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver</a>(solver, dt, 1, NULL);</div> +<div class="line"></div> +<div class="line"> <span class="comment">// read back (async)</span></div> +<div class="line"> <a class="code" href="_nv_flex_8h.html#a84f06fff995d8eb034cff81c811fa312">NvFlexGetParticles</a>(particleBuffer, n);</div> +<div class="line"> <a class="code" href="_nv_flex_8h.html#a67bd9669086e823ebe33d08d14f5b2b9">NvFlexGetVelocities</a>(velocityBuffer, n);</div> +<div class="line"> <a class="code" href="_nv_flex_8h.html#a15b7a5449bee38bbe5dcaf23690f09f5">NvFlexGetPhases</a>(phaseBuffer, n);</div> +<div class="line">}</div> +<div class="line"></div> +<div class="line"><a class="code" href="_nv_flex_8h.html#ab559759820a4322aff061745ef26c867">NvFlexFreeBuffer</a>(particleBuffer);</div> +<div class="line"><a class="code" href="_nv_flex_8h.html#ab559759820a4322aff061745ef26c867">NvFlexFreeBuffer</a>(velocityBuffer);</div> +<div class="line"><a class="code" href="_nv_flex_8h.html#ab559759820a4322aff061745ef26c867">NvFlexFreeBuffer</a>(phaseBuffer);</div> +<div class="line"></div> +<div class="line"><a class="code" href="_nv_flex_8h.html#a1d755d7b090f7ed5c4c50d2d3fef1558">NvFlexDestroySolver</a>(solver);</div> +<div class="line"><a class="code" href="_nv_flex_8h.html#aaf59e45ada57c7f958a8030099cbe211">NvFlexShutdown</a>(library);</div> +</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">dt</td><td>Time to integrate the solver forward in time by </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">substeps</td><td>The time dt will be divided into the number of sub-steps given by this parameter </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">enableTimers</td><td>Whether to enable per-kernel timers for profiling. Note that profiling can substantially slow down overall performance so this param should only be true in non-release builds </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ae2db6ad8006027c1acf2315a0d15fe71"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexSetParams </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const <a class="el" href="_nv_flex_8h.html#struct_nv_flex_params">NvFlexParams</a> * </td> + <td class="paramname"><em>params</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Update solver paramters</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">params</td><td>Parameters structure in host memory, see <a class="el" href="_nv_flex_8h.html#struct_nv_flex_params">NvFlexParams</a> </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a581b458848039220203547af53de128f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexGetParams </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_params">NvFlexParams</a> * </td> + <td class="paramname"><em>params</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Retrieve solver paramters, default values will be set at solver creation time</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">params</td><td>Parameters structure in host memory, see <a class="el" href="_nv_flex_8h.html#struct_nv_flex_params">NvFlexParams</a> </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="aea2af336bdd96d7168c3acdce6d1875d"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexSetActive </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>indices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>n</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Set the active particles indices in the solver</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>Holds the indices of particles that have been made active </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>Number of particles to allocate </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="aeed8fe87fa073067af1a45560cc54a79"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexGetActive </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>indices</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Return the active particle indices</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">indices</td><td>a buffer of indices at least activeCount in length </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a2345372dea2ad4f043153a84e7a2c407"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API int NvFlexGetActiveCount </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Return the number of active particles in the solver</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>The number of active particles in the solver </dd></dl> + +</div> +</div> +<a class="anchor" id="abef057ac89ba5cf1cd71f0084f9313de"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexSetParticles </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>p</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>n</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Set the particles state of the solver, a particle consists of 4 floating point numbers, its x,y,z position followed by its inverse mass (1/m)</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>Pointer to a buffer of particle data, should be 4*n in length </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of particles to set </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a84f06fff995d8eb034cff81c811fa312"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexGetParticles </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>p</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>n</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Get the particles state of the solver, a particle consists of 4 floating point numbers, its x,y,z position followed by its inverse mass (1/m)</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">p</td><td>Pointer to a buffer of 4*n floats that will be filled out with the particle data, can be either a host or device pointer </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of particles to get, must be less than max particles passed to NvFlexCreateSolver </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="aa457096286567a37d4f1d5f4857d9296"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexSetRestParticles </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>p</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>n</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Set the particle positions in their rest state, if eNvFlexPhaseSelfCollideFilter is set on the particle's phase attribute then particles that overlap in the rest state will not generate collisions with each other</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>Pointer to a buffer of particle data, should be 4*n in length </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of particles to set </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="affb884bcf3e7e389812d0b52b0fc0490"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexGetRestParticles </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>p</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>n</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Get the particle positions in their rest state</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>Pointer to a buffer of particle data, should be 4*n in length </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of particles to set </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="abfa62e01c4f4511d3f6a00ab6a0f257a"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexGetSmoothParticles </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>p</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>n</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Get the Laplacian smoothed particle positions for rendering, see <a class="el" href="_nv_flex_8h.html#ac017e05107d0362d3d03a14eaadf0657" title="Control the strength of Laplacian smoothing in particles for rendering, if zero then smoothed positio...">NvFlexParams::smoothing</a></p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">p</td><td>Pointer to a buffer of 4*n floats that will be filled out with the data, can be either a host or device pointer </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of smooth particles to return </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="afe09e63d22c5156fe24cd2d2bc069c04"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexSetVelocities </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>v</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>n</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Set the particle velocities, each velocity is a 3-tuple of x,y,z floating point values</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">v</td><td>Pointer to a buffer of 3*n floats </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of velocities to set </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a67bd9669086e823ebe33d08d14f5b2b9"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexGetVelocities </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>v</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>n</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Get the particle velocities, each velocity is a 3-tuple of x,y,z floating point values</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">v</td><td>Pointer to a buffer of 3*n floats that will be filled out with the data, can be either a host or device pointer </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of velocities to get </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a3117f92571613709936291c48414e521"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexSetPhases </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>phases</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>n</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Set the particles phase id array, each particle has an associated phase id which controls how it interacts with other particles. Particles with phase 0 interact with all other phase types.</p> +<p>Particles with a non-zero phase id only interact with particles whose phase differs from theirs. This is useful, for example, to stop particles belonging to a single rigid shape from interacting with each other.</p> +<p>Phase 0 is used to indicate fluid particles when NvFlexParams::mFluid is set.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">phases</td><td>Pointer to a buffer of n integers containing the phases </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of phases to set </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a15b7a5449bee38bbe5dcaf23690f09f5"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexGetPhases </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>phases</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>n</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Get the particle phase ids</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">phases</td><td>Pointer to a buffer of n integers that will be filled with the phase data, can be either a host or device pointer </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of phases to get </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="add03fd357383845f07e0596290faf316"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexSetNormals </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>normals</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>n</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Set per-particle normals to the solver, these will be overwritten after each simulation step, but can be used to initialize the normals to valid values</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">normals</td><td>Pointer to a buffer of normals, should be 4*n in length </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of normals to set </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="aadb2a0cf125e4a6b2f3443ab7dcbd3d4"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexGetNormals </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>normals</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>n</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Get per-particle normals from the solver, these are the world-space normals computed during surface tension, cloth, and rigid body calculations</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">normals</td><td>Pointer to a buffer of normals, should be 4*n in length </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of normals to get </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ae67c0cab2ecee8eb9485a26ef0fad6a9"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexSetSprings </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>indices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>restLengths</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>stiffness</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numSprings</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Set distance constraints for the solver. Each distance constraint consists of two particle indices stored consecutively, a rest-length, and a stiffness value. These are not springs in the traditional sense, but behave somewhat like a traditional spring when lowering the stiffness coefficient.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>Pointer to the spring indices array, should be 2*numSprings length, 2 indices per-spring </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">restLengths</td><td>Pointer to a buffer of rest lengths, should be numSprings length </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">stiffness</td><td>Pointer to the spring stiffness coefficents, should be numSprings in length, a negative stiffness value represents a tether constraint </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numSprings</td><td>The number of springs to set </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="aab5f90f4024d71d08c3f9327c6d8c184"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexGetSprings </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>indices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>restLengths</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>stiffness</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numSprings</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Get the distance constraints from the solver</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">indices</td><td>Pointer to the spring indices array, should be 2*numSprings length, 2 indices per-spring </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">restLengths</td><td>Pointer to a buffer of rest lengths, should be numSprings length </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">stiffness</td><td>Pointer to the spring stiffness coefficents, should be numSprings in length, a negative stiffness value represents a unilateral tether constraint (only resists stretching, not compression), valid range [-1, 1] </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numSprings</td><td>The number of springs to get </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a89c872e761a53c87375f536a0ef597d8"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexSetRigids </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>offsets</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>indices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>restPositions</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>restNormals</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>stiffness</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>rotations</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>translations</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numRigids</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numIndices</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Set rigid body constraints for the solver. </p><dl class="section note"><dt>Note</dt><dd>A particle should not belong to more than one rigid body at a time.</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">offsets</td><td>Pointer to a buffer of start offsets for a rigid in the indices array, should be numRigids+1 in length, the first entry must be 0 </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>Pointer to a buffer of indices for the rigid bodies, the indices for the jth rigid body start at indices[offsets[j]] and run to indices[offsets[j+1]] exclusive </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">restPositions</td><td>Pointer to a buffer of local space positions relative to the rigid's center of mass (average position), this should be at least 3*numIndices in length in the format x,y,z </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">restNormals</td><td>Pointer to a buffer of local space normals, this should be at least 4*numIndices in length in the format x,y,z,w where w is the (negative) signed distance of the particle inside its shape </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">stiffness</td><td>Pointer to a buffer of rigid stiffness coefficents, should be numRigids in length, valid values in range [0, 1] </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">rotations</td><td>Pointer to a buffer of quaternions (4*numRigids in length) </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">translations</td><td>Pointer to a buffer of translations of the center of mass (3*numRigids in length) </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numRigids</td><td>The number of rigid bodies to set </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numIndices</td><td>The number of indices in the indices array </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a3eafe7fe6b200c757c7402eca7d13f6d"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexGetRigidTransforms </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>rotations</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>translations</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Get the rotation matrices for the rigid bodies in the solver</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">rotations</td><td>Pointer to a buffer of quaternions, should be 4*numRigids floats in length </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">translations</td><td>Pointer to a buffer of vectors to hold the rigid translations, should be 3*numRigids floats in length </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="afdda5a5210938a1e8a7c3a8218ad468e"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a> NvFlexCreateTriangleMesh </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>lib</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Create triangle mesh geometry, note that meshes may be used by multiple solvers if desired</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>A pointer to a triangle mesh object </dd></dl> + +</div> +</div> +<a class="anchor" id="a4cb4462803ebff105d151fd45b4efad6"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexDestroyTriangleMesh </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>lib</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a> </td> + <td class="paramname"><em>mesh</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Destroy a triangle mesh created with <a class="el" href="_nv_flex_8h.html#afdda5a5210938a1e8a7c3a8218ad468e">NvFlexCreateTriangleMesh()</a></p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">mesh</td><td>A triangle mesh created with <a class="el" href="_nv_flex_8h.html#afdda5a5210938a1e8a7c3a8218ad468e">NvFlexCreateTriangleMesh()</a> </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a4958c555f0ed65dee54c37af32529356"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexUpdateTriangleMesh </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>lib</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a> </td> + <td class="paramname"><em>mesh</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>vertices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>indices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numVertices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numTriangles</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const float * </td> + <td class="paramname"><em>lower</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const float * </td> + <td class="paramname"><em>upper</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Specifies the triangle mesh geometry (vertices and indices), this method will cause any internal data structures (e.g.: bounding volume hierarchies) to be rebuilt.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">mesh</td><td>A triangle mesh created with <a class="el" href="_nv_flex_8h.html#afdda5a5210938a1e8a7c3a8218ad468e">NvFlexCreateTriangleMesh()</a> </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">vertices</td><td>Pointer to a buffer of float3 vertex positions </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>Pointer to a buffer of triangle indices, should be length numTriangles*3 </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numVertices</td><td>The number of vertices in the vertices array </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numTriangles</td><td>The number of triangles in the mesh </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">lower</td><td>A pointer to a float3 vector holding the lower spatial bounds of the mesh </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">upper</td><td>A pointer to a float3 vector holding the upper spatial bounds of the mesh </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a60794d849b4184335e2a0ddec0a9e6a2"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexGetTriangleMeshBounds </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>lib</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const <a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a> </td> + <td class="paramname"><em>mesh</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float * </td> + <td class="paramname"><em>lower</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float * </td> + <td class="paramname"><em>upper</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Retrieve the local space bounds of the mesh, these are the same values specified to <a class="el" href="_nv_flex_8h.html#a4958c555f0ed65dee54c37af32529356">NvFlexUpdateTriangleMesh()</a></p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">mesh</td><td>Pointer to a triangle mesh object </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">lower</td><td>Pointer to a buffer of 3 floats that the lower mesh bounds will be written to </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">upper</td><td>Pointer to a buffer of 3 floats that the upper mesh bounds will be written to </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a5c28caf6d5d513c5adacd4fbc782f308"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlexDistanceFieldId</a> NvFlexCreateDistanceField </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>lib</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Create a signed distance field collision shape, see NvFlexDistanceFieldId for details.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>A pointer to a signed distance field object </dd></dl> + +</div> +</div> +<a class="anchor" id="ab11bdd7f778d17af16cefea33265cb65"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexDestroyDistanceField </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>lib</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlexDistanceFieldId</a> </td> + <td class="paramname"><em>sdf</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Destroy a signed distance field</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">sdf</td><td>A signed distance field created with <a class="el" href="_nv_flex_8h.html#a5c28caf6d5d513c5adacd4fbc782f308">NvFlexCreateDistanceField()</a> </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a584ffb275b9986fd5444ed1a7ea247d9"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexUpdateDistanceField </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>lib</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlexDistanceFieldId</a> </td> + <td class="paramname"><em>sdf</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>dimx</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>dimy</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>dimz</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>field</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Update the signed distance field volume data, this method will upload the field data to a 3D texture on the GPU</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">sdf</td><td>A signed distance field created with <a class="el" href="_nv_flex_8h.html#a5c28caf6d5d513c5adacd4fbc782f308">NvFlexCreateDistanceField()</a> </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">dimx</td><td>The x-dimension of the volume data in voxels </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">dimy</td><td>The y-dimension of the volume data in voxels </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">dimz</td><td>The z-dimension of the volume data in voxels </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">field</td><td>The volume data stored such that the voxel at the x,y,z coordinate is addressed as field[z*dimx*dimy + y*dimx + x] </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="afbaafe2b1006352002b03aabaca531cc"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a> NvFlexCreateConvexMesh </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>lib</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Create a convex mesh collision shapes, see NvFlexConvexMeshId for details.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>A pointer to a signed distance field object </dd></dl> + +</div> +</div> +<a class="anchor" id="ac85b6372e5c7bfc508ecb7b8c59c72a0"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexDestroyConvexMesh </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>lib</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a> </td> + <td class="paramname"><em>convex</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Destroy a convex mesh</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">convex</td><td>A a convex mesh created with <a class="el" href="_nv_flex_8h.html#afbaafe2b1006352002b03aabaca531cc">NvFlexCreateConvexMesh()</a> </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a69289002a6f8ecd697118f0ec6572f5d"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexUpdateConvexMesh </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>lib</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a> </td> + <td class="paramname"><em>convex</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>planes</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numPlanes</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float * </td> + <td class="paramname"><em>lower</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float * </td> + <td class="paramname"><em>upper</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Update the convex mesh geometry</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">convex</td><td>A valid convex mesh shape created from <a class="el" href="_nv_flex_8h.html#afbaafe2b1006352002b03aabaca531cc">NvFlexCreateConvexMesh()</a> </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">planes</td><td>An array of planes, each plane consists of 4 floats in the form a*x + b*y + c*z + d = 0 </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numPlanes</td><td>The number of planes in the convex </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">lower</td><td>The local space lower bound of the convex shape </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">upper</td><td>The local space upper bound of the convex shape </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ad56e661161763579afb375b3841eb5ff"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexGetConvexMeshBounds </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>lib</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a> </td> + <td class="paramname"><em>mesh</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float * </td> + <td class="paramname"><em>lower</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float * </td> + <td class="paramname"><em>upper</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Retrieve the local space bounds of the mesh, these are the same values specified to <a class="el" href="_nv_flex_8h.html#a69289002a6f8ecd697118f0ec6572f5d">NvFlexUpdateConvexMesh()</a></p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">mesh</td><td>Pointer to a convex mesh object </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">lower</td><td>Pointer to a buffer of 3 floats that the lower mesh bounds will be written to </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">upper</td><td>Pointer to a buffer of 3 floats that the upper mesh bounds will be written to </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ad6ee1e23e0c49aad63df8f605182de3a"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API int NvFlexMakeShapeFlags </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26ba">NvFlexCollisionShapeType</a> </td> + <td class="paramname"><em>type</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">bool </td> + <td class="paramname"><em>dynamic</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Combines geometry type and static/dynamic flags </p> + +</div> +</div> +<a class="anchor" id="aea4e7117722df53dfe44c676496117fa"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexSetShapes </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>geometry</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>shapePositions</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>shapeRotations</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>shapePrevPositions</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>shapePrevRotations</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>shapeFlags</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numShapes</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Set the collision shapes for the solver</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">geometry</td><td>Pointer to a buffer of <a class="el" href="_nv_flex_8h.html#union_nv_flex_collision_geometry">NvFlexCollisionGeometry</a> entries, the type of each shape determines how many entries it has in the array </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">shapePositions</td><td>Pointer to a buffer of translations for each shape in world space, should be 4*numShapes in length </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">shapeRotations</td><td>Pointer to an a buffer of rotations for each shape stored as quaternion, should be 4*numShapes in length </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">shapePrevPositions</td><td>Pointer to a buffer of translations for each shape at the start of the time step, should be 4*numShapes in length </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">shapePrevRotations</td><td>Pointer to an a buffer of rotations for each shape stored as a quaternion at the start of the time step, should be 4*numShapees in length </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">shapeFlags</td><td>The type and behavior of the shape, NvFlexCollisionShapeFlags for more detail </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numShapes</td><td>The number of shapes </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="aa03d94be697cdc3aaa56e469d87255a4"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexSetDynamicTriangles </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>indices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>normals</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numTris</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Set dynamic triangles mesh indices, typically used for cloth. Flex will calculate normals and apply wind and drag effects to connected particles. See <a class="el" href="_nv_flex_8h.html#a7043181449aebf540351d1d2f785cf4a" title="Drag force applied to particles belonging to dynamic triangles, proportional to velocity^2*area in th...">NvFlexParams::drag</a>, <a class="el" href="_nv_flex_8h.html#aafb92c4fa45ce9614cdfd349b3722c8a" title="Constant acceleration applied to particles that belong to dynamic triangles, drag needs to be > 0 for...">NvFlexParams::wind</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>Pointer to a buffer of triangle indices into the particles array, should be 3*numTris in length </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">normals</td><td>Pointer to a buffer of triangle normals, should be 3*numTris in length, can be NULL </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numTris</td><td>The number of dynamic triangles s </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="abdfd0834422dd99154a27962614525e5"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexGetDynamicTriangles </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>indices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>normals</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numTris</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Get the dynamic triangle indices and normals.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">indices</td><td>Pointer to a buffer of triangle indices into the particles array, should be 3*numTris in length, if NULL indices will not be returned </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">normals</td><td>Pointer to a buffer of triangle normals, should be 3*numTris in length, if NULL normals will be not be returned </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numTris</td><td>The number of dynamic triangles </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a7f2b59fba77c60ce116e1eac57d63e50"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexSetInflatables </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>startTris</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>numTris</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>restVolumes</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>overPressures</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>constraintScales</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numInflatables</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Set inflatable shapes, an inflatable is a range of dynamic triangles (wound CCW) that represent a closed mesh. Each inflatable has a given rest volume, constraint scale (roughly equivalent to stiffness), and "over pressure" that controls how much the shape is inflated.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">startTris</td><td>Pointer to a buffer of offsets into the solver's dynamic triangles for each inflatable, should be numInflatables in length </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numTris</td><td>Pointer to a buffer of triangle counts for each inflatable, should be numInflatablesin length </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">restVolumes</td><td>Pointer to a buffer of rest volumes for the inflatables, should be numInflatables in length </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">overPressures</td><td>Pointer to a buffer of floats specifying the pressures for each inflatable, a value of 1.0 means the rest volume, > 1.0 means over-inflated, and < 1.0 means under-inflated, should be numInflatables in length </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">constraintScales</td><td>Pointer to a buffer of scaling factors for the constraint, this is roughly equivalent to stiffness but includes a constraint scaling factor from position-based dynamics, see helper code for details, should be numInflatables in length </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numInflatables</td><td>Number of inflatables to set </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a6f6f14e625dc744a127be81e6dc4cb74"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexGetDensities </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>densities</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>n</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Get the density values for fluid particles</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of particle densities to return </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">densities</td><td>Pointer to a buffer of floats, should be maxParticles in length, density values are normalized between [0, 1] where 1 represents the rest density </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ae28167c680ad56dcff600ce0a223cec5"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexGetAnisotropy </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>q1</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>q2</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>q3</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Get the anisotropy of fluid particles, the particle distribution for a particle is represented by 3 orthogonal vectors. Each 3-vector has unit length with the variance along that axis packed into the w component, i.e.: x,y,z,lambda.</p> +<p>The anisotropy defines an oriented ellipsoid in worldspace that can be used for rendering or surface extraction.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">q1</td><td>Pointer to a buffer of floats that receive the first basis vector and scale, should be 4*maxParticles in length </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">q2</td><td>Pointer to a buffer of floats that receive the second basis vector and scale, should be 4*maxParticles in length </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">q3</td><td>Pointer to a buffer of floats that receive the third basis vector and scale, should be 4*maxParticles in length </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a37ada4b95999cc253dfb049b99030d50"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API int NvFlexGetDiffuseParticles </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>p</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>v</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>indices</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Get the state of the diffuse particles. Diffuse particles are passively advected by the fluid velocity field.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">p</td><td>Pointer to a buffer of floats, should be 4*maxParticles in length, the w component represents the particles lifetime with 1 representing a new particle, and 0 representing an inactive particle </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">v</td><td>Pointer to a buffer of floats, should be 4*maxParticles in length, the w component is not used </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">indices</td><td>Pointer to a buffer of ints that specify particle indices in depth sorted order, should be maxParticles in length, see NvFlexParams::mDiffuseSortDir </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a5a7213593dd9a23d9d67f8517d1da9de"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexSetDiffuseParticles </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>p</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>v</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>n</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Set the state of the diffuse particles. Diffuse particles are passively advected by the fluid velocity field.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>Pointer to a buffer of floats, should be 4*n in length, the w component represents the particles lifetime with 1 representing a new particle, and 0 representing an inactive particle </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">v</td><td>Pointer to a buffer of floats, should be 4*n in length, the w component is not used </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>Number of diffuse particles to set </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a7edac9cf450917147b83e98f5cb09f5d"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexGetContacts </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>planes</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>velocities</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>indices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>counts</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Get the particle contact planes. Note this will only include contacts that were active on the last substep of an update, and will include all contact planes generated within <a class="el" href="_nv_flex_8h.html#a0e4cb2f91d3b7d122000d36a7d67ab81" title="Increases the radius used during contact finding against kinematic shapes. ">NvFlexParams::shapeCollisionMargin</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">planes</td><td>Pointer to a destination buffer containing the contact planes for the particle, each particle can have up to 4 contact planes so this buffer should be 16*maxParticles in length </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">velocities</td><td>Pointer to a destination buffer containing the velocity of the contact point on the shape in world space, the index of the shape (corresponding to the shape in <a class="el" href="_nv_flex_8h.html#aea4e7117722df53dfe44c676496117fa">NvFlexSetShapes()</a> is stored in the w component), each particle can have up to 4 contact planes so this buffer should be 16*maxParticles in length </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">indices</td><td>Pointer to a buffer of indices into the contacts buffer, the first contact plane for the i'th particle is given by planes[indices[i]*sizeof(float)*4] and subsequent contacts for that particle are stored sequentially, this array should be maxParticles in length </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">counts</td><td>Pointer to a buffer of contact counts for each particle (will be <= 4), this buffer should be maxParticles in length </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ab1eec84a21b1872fba11c9b4cc1d1629"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexGetBounds </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>lower</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>upper</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Get the world space AABB of all particles in the solver, note that the bounds are calculated during the update (see <a class="el" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver()</a>) so only become valid after an update has been performed. The returned bounds represent bounds of the particles in their predicted positions <em>before</em> the constraint solve.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">lower</td><td>Pointer to a buffer of 3 floats to receive the lower bounds </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">upper</td><td>Pointer to a buffer of 3 floats to receive the upper bounds </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a221a4621ab98eca6ecd3368d288154a4"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API float NvFlexGetDeviceLatency </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>The time in seconds between the first and last GPU operations executed by the last NvFlexUpdateSolver.</dd></dl> +<dl class="section note"><dt>Note</dt><dd>This method causes the CPU to wait until the GPU has finished any outstanding work. To avoid blocking the calling thread it should be called after work has completed, e.g.: directly after a <a class="el" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap()</a>. </dd></dl> + +</div> +</div> +<a class="anchor" id="ab16b6d2e11e0ab417ee6c4cf16f0a27d"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexGetTimers </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_timers">NvFlexTimers</a> * </td> + <td class="paramname"><em>timers</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Fetch high-level GPU timers.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>The solver instance to use </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">timers</td><td>A struct containing the GPU latency of each stage in the physics pipeline.</td></tr> + </table> + </dd> +</dl> +<dl class="section note"><dt>Note</dt><dd>This method causes the CPU to wait until the GPU has finished any outstanding work. To avoid blocking the calling thread it should be called after work has completed, e.g.: directly after a <a class="el" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap()</a>. To capture there timers you must pass true for enableTimers in <a class="el" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver()</a> </dd></dl> + +</div> +</div> +<a class="anchor" id="ab1efb6764f65900cb09f0188ad6da08a"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API int NvFlexGetDetailTimers </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_detail_timer">NvFlexDetailTimer</a> ** </td> + <td class="paramname"><em>timers</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Fetch per-shader GPU timers.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>The solver instance to use </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">timers</td><td>An array of <a class="el" href="_nv_flex_8h.html#struct_nv_flex_detail_timer">NvFlexDetailTimer</a> structures, each representing a unique shader. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>The number of detail timers in the timers array</dd></dl> +<dl class="section note"><dt>Note</dt><dd>This method causes the CPU to wait until the GPU has finished any outstanding work. To avoid blocking the calling thread it should be called after work has completed, e.g.: directly after a <a class="el" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap()</a>. To capture there timers you must pass true for enableTimers in <a class="el" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver()</a> Timers are valid until the next call to NvFlexGetDetailTimers </dd></dl> + +</div> +</div> +<a class="anchor" id="ad48f83b8442323687d2268206e913496"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* NvFlexAllocBuffer </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>lib</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>elementCount</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>elementByteStride</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3">NvFlexBufferType</a> </td> + <td class="paramname"><em>type</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Allocate a Flex buffer. Buffers are used to pass data to the API in an efficient manner.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">elementCount</td><td>The number of elements in the buffer </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">elementByteStride</td><td>The size of each element in bytes </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>The type of buffer to allocate, can be either host memory or device memory </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>A pointer to a NvFlexBuffer </dd></dl> + +</div> +</div> +<a class="anchor" id="ab559759820a4322aff061745ef26c867"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexFreeBuffer </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>buf</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Free a Flex buffer</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">buf</td><td>A buffer to free, must be allocated with <a class="el" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer()</a> </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a0898bb9210440b159688d4647f6eb083"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void* NvFlexMap </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>buffer</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>flags</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Maps a buffer for reading and writing. When the buffer is created with NvFlexBufferType::eHost, then the returned pointer will be a host memory address that can be read/written. Mapping a buffer implicitly synchronizes with the GPU to ensure that any reads or writes from the buffer (e.g.: from the NvFlexGet*() or NvFlexSet*()) methods have completed.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">buffer</td><td>A buffer allocated with <a class="el" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer()</a> </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>Hints to Flex how the buffer is to be accessed, typically this should be eNvFlexMapWait (0) </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>A pointer to the mapped memory </dd></dl> + +</div> +</div> +<a class="anchor" id="a054cb27646a389ea257d1bbde46a6e97"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexUnmap </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>buffer</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Unmaps a buffer that was mapped through <a class="el" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap()</a>, note that buffers must be unmapped before they can be passed to a NvFlexGet*() or NvFlexSet*() method</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">buffer</td><td>A valid buffer allocated through <a class="el" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer()</a> </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="aab83daf46e5a9428a0ad76fb75e8ec7e"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* NvFlexRegisterOGLBuffer </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>lib</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>buf</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>elementCount</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>elementByteStride</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Registers an OpenGL buffer to Flex which can be used to copy directly into a graphics resource. Example usage is below</p> +<div class="fragment"><div class="line">GLuint vbo;</div> +<div class="line">glGenBuffers(1, &vbo);</div> +<div class="line">glBindBuffer(GL_ARRAY_BUFFER, vbo);</div> +<div class="line">glBufferData(GL_ARRAY_BUFFER, size, NULL, GL_DYNAMIC_DRAW)</div> +<div class="line"></div> +<div class="line"><a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* vboBuffer = <a class="code" href="_nv_flex_8h.html#aab83daf46e5a9428a0ad76fb75e8ec7e">NvFlexRegisterOGLBuffer</a>(lib, vbo, n, sizeof(<span class="keywordtype">float</span>)*4);</div> +<div class="line"></div> +<div class="line"><span class="comment">// simulate </span></div> +<div class="line">...</div> +<div class="line"></div> +<div class="line"><span class="comment">// copy directly from Flex into render buffer</span></div> +<div class="line"><a class="code" href="_nv_flex_8h.html#a84f06fff995d8eb034cff81c811fa312">NvFlexGetParticles</a>(vboBuffer, n);</div> +<div class="line"></div> +<div class="line"><span class="comment">// render</span></div> +<div class="line">...</div> +</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">buf</td><td>An OpenGL buffer identifier </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">elementCount</td><td>The number of elements in the buffer </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">elementByteStride</td><td>the size of each element in bytes </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>A valid NvFlexBuffer pointer that may be used with NvFlexGet*() methods to populate the render buffer using direct GPU-GPU copies </dd></dl> + +</div> +</div> +<a class="anchor" id="a78045a8d4e856372df108dc616a94cd8"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexUnregisterOGLBuffer </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>buf</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Unregister a NvFlexBuffer allocated through <a class="el" href="_nv_flex_8h.html#aab83daf46e5a9428a0ad76fb75e8ec7e">NvFlexRegisterOGLBuffer()</a></p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">buf</td><td>A valid buffer </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ab487e68ce1c84ce1eec0c85b7daf5aa0"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* NvFlexRegisterD3DBuffer </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>lib</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">void * </td> + <td class="paramname"><em>buffer</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>elementCount</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>elementByteStride</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Registers a Direct3D buffer to Flex which can be used to copy directly into a graphics resource</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">buffer</td><td>A pointer to either an ID3D11Buffer or ID3D12Resource object </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">elementCount</td><td>The number of elements in the buffer </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">elementByteStride</td><td>the size of each element in bytes </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>A valid NvFlexBuffer pointer that may be used with NvFlexGet*() methods to populate the render buffer using direct GPU-GPU copies </dd></dl> + +</div> +</div> +<a class="anchor" id="ad607e7916e5d76b384a61f1c1f94ab32"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexUnregisterD3DBuffer </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td> + <td class="paramname"><em>buf</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Unregister a NvFlexBuffer allocated through NvFlexRegistereD3DBuffer()</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">buf</td><td>A valid buffer </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a42ec7b30c79d4733e6a756b5d9b15ee6"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexAcquireContext </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>lib</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Ensures that the CUDA context the library was initialized with is present on the current thread</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ae6671f352bd77e296609d0bc2a57fd11"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexRestoreContext </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>lib</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Restores the CUDA context (if any) that was present on the last call to <a class="el" href="_nv_flex_8h.html#a42ec7b30c79d4733e6a756b5d9b15ee6">NvFlexAcquireContext()</a> Note: the acquire/restore pair of calls must come from the same thread </p> + +</div> +</div> +<a class="anchor" id="a4c451971259524c6878b6b1ed4023ada"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API const char* NvFlexGetDeviceName </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>lib</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Returns a null-terminated string with the compute device name</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a2ac0a898a565a2cdf13b80acd4a3555c"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexGetDeviceAndContext </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>lib</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">void ** </td> + <td class="paramname"><em>device</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">void ** </td> + <td class="paramname"><em>context</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Retrieve the device and context for the the library. On CUDA the context pointer will be filled with a pointer to a CUcontext structure On D3D the device and context pointers will be filled with pointers to a NvFlex::Device, and NvFlex::Context wrapper</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>Pointer to a valid library returned from <a class="el" href="_nv_flex_8h.html#a687e5ec141948f779faa9183b68cb743">NvFlexInit()</a> </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">device</td><td>Pointer to a device pointer, see description </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">context</td><td>Pointer to a context pointer, see description </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a898eb8e66a456dd2266c694f29cab600"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexFlush </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>lib</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Force a pipeline flush to ensure any queued work is submitted to the GPU</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Wed Feb 22 2017 12:18:22 for FLEX by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.9.1 +</small></address> +</body> +</html> diff --git a/doc/_static/api/_nv_flex_8h_source.html b/doc/_static/api/_nv_flex_8h_source.html new file mode 100644 index 0000000..434a362 --- /dev/null +++ b/doc/_static/api/_nv_flex_8h_source.html @@ -0,0 +1,736 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.9.1"/> +<title>FLEX: NvFlex.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +<link href="flex.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">FLEX +  <span id="projectnumber">1.1.0</span> + </div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.9.1 --> +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">NvFlex.h</div> </div> +</div><!--header--> +<div class="contents"> +<a href="_nv_flex_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// This code contains NVIDIA Confidential Information and is disclosed to you</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// under a form of NVIDIA software license agreement provided separately to you.</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">//</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// Notice</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// NVIDIA Corporation and its licensors retain all intellectual property and</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// proprietary rights in and to this software and related documentation and</span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// any modifications thereto. Any use, reproduction, disclosure, or</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distribution of this software and related documentation without an express</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// license agreement from NVIDIA Corporation is strictly prohibited.</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,</span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">//</span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// Information and code furnished is believed to be accurate and reliable.</span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// information or for any infringement of patents or other rights of third parties that may</span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// result from its use. No license is granted by implication or otherwise under any patent</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">// or patent rights of NVIDIA Corporation. Details are subject to change without notice.</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">// This code supersedes and replaces all information previously supplied.</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">// NVIDIA Corporation products are not authorized for use as critical</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">// components in life support devices or systems without express written approval of</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// NVIDIA Corporation.</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">//</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Copyright (c) 2013-2017 NVIDIA Corporation. All rights reserved.</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#ifndef NV_FLEX_H</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#define NV_FLEX_H</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#if _WIN32</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#define NV_FLEX_API __declspec(dllexport)</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#define NV_FLEX_API</span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// least 2 significant digits define minor version, eg: 10 -> version 0.10</span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#define NV_FLEX_VERSION 110</span></div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div> +<div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318"> 52</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> <a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>;</div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div> +<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e"> 57</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> <a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>;</div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div> +<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a"> 62</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>;</div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div> +<div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16c"> 67</a></span> <span class="keyword">enum</span> <a class="code" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16c">NvFlexMapFlags</a></div> +<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> {</div> +<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6"> 69</a></span>  <a class="code" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">eNvFlexMapWait</a> = 0, </div> +<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca1bd450ab65ccc06288fae95e23d5e6f1"> 70</a></span>  <a class="code" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca1bd450ab65ccc06288fae95e23d5e6f1">eNvFlexMapDoNotWait</a> = 1, </div> +<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16caa01c2dce3aa1e0d9d151060e1786c706"> 71</a></span>  <a class="code" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16caa01c2dce3aa1e0d9d151060e1786c706">eNvFlexMapDiscard</a> = 2 </div> +<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> };</div> +<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div> +<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3"> 77</a></span> <span class="keyword">enum</span> <a class="code" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3">NvFlexBufferType</a></div> +<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> {</div> +<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8"> 79</a></span>  <a class="code" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8">eNvFlexBufferHost</a> = 0, </div> +<div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3a103255fa795b55a7f430a41493002576"> 80</a></span>  <a class="code" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3a103255fa795b55a7f430a41493002576">eNvFlexBufferDevice</a> = 1, </div> +<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> };</div> +<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div> +<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3b"> 86</a></span> <span class="keyword">enum</span> <a class="code" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3b">NvFlexRelaxationMode</a></div> +<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> {</div> +<div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba33711a4b466d606d68dee43918f819db"> 88</a></span>  <a class="code" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba33711a4b466d606d68dee43918f819db">eNvFlexRelaxationGlobal</a> = 0, </div> +<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba858afe9529e908c2bc8ce92da8943b7c"> 89</a></span>  <a class="code" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba858afe9529e908c2bc8ce92da8943b7c">eNvFlexRelaxationLocal</a> = 1 </div> +<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> };</div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div> +<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 96</a></span> <span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#struct_nv_flex_params">NvFlexParams</a></div> +<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> {</div> +<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a572c9bf93128466e27d57f225f4d0188"> 98</a></span>  <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#a572c9bf93128466e27d57f225f4d0188">numIterations</a>; </div> +<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div> +<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a482a7c3b197c4df656e9509fbd04032c"> 100</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a482a7c3b197c4df656e9509fbd04032c">gravity</a>[3]; </div> +<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#aa6eddaa3a6eb35917c093dcabf69a200"> 101</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#aa6eddaa3a6eb35917c093dcabf69a200">radius</a>; </div> +<div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab7c54d6c0b3d3595780e5179bf62ebc4"> 102</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ab7c54d6c0b3d3595780e5179bf62ebc4">solidRestDistance</a>; </div> +<div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ad019ad1901bc33d43e3a60df0dfe9b09"> 103</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ad019ad1901bc33d43e3a60df0dfe9b09">fluidRestDistance</a>; </div> +<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div> +<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// common params</span></div> +<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a27a185172ad1951d40c476ade8307068"> 106</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a27a185172ad1951d40c476ade8307068">dynamicFriction</a>; </div> +<div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#af0a34fd0cdf686022650be9f895cbf2f"> 107</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#af0a34fd0cdf686022650be9f895cbf2f">staticFriction</a>; </div> +<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#af7a56fc54644e7020e105f2ff41dfb60"> 108</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#af7a56fc54644e7020e105f2ff41dfb60">particleFriction</a>; </div> +<div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#afc306cb48c313ee518461d60c1014485"> 109</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#afc306cb48c313ee518461d60c1014485">restitution</a>; </div> +<div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a8114a049f5e16f7d1b960f3ac4993fdb"> 110</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a8114a049f5e16f7d1b960f3ac4993fdb">adhesion</a>; </div> +<div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a533a78227b462a268c905f9c307c4bd6"> 111</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a533a78227b462a268c905f9c307c4bd6">sleepThreshold</a>; </div> +<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  </div> +<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab003c023dde289dee075c49db022ccaf"> 113</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ab003c023dde289dee075c49db022ccaf">maxSpeed</a>; </div> +<div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0def9c3ceff57bbae5bcec15f6d64b36"> 114</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a0def9c3ceff57bbae5bcec15f6d64b36">maxAcceleration</a>; </div> +<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  </div> +<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab98a2aba477ab4d4178bf677852bf544"> 116</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ab98a2aba477ab4d4178bf677852bf544">shockPropagation</a>; </div> +<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#aeff62427426510eeb1cf5625e14ff585"> 117</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#aeff62427426510eeb1cf5625e14ff585">dissipation</a>; </div> +<div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a6198445df7f341ec75f37e1dfb44830c"> 118</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a6198445df7f341ec75f37e1dfb44830c">damping</a>; </div> +<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div> +<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="comment">// cloth params</span></div> +<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#aafb92c4fa45ce9614cdfd349b3722c8a"> 121</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#aafb92c4fa45ce9614cdfd349b3722c8a">wind</a>[3]; </div> +<div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a7043181449aebf540351d1d2f785cf4a"> 122</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a7043181449aebf540351d1d2f785cf4a">drag</a>; </div> +<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#af9bb710afb22ec5ed50679aef8717777"> 123</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#af9bb710afb22ec5ed50679aef8717777">lift</a>; </div> +<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div> +<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">// fluid params</span></div> +<div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a8f0ee62a14387dd5b5a4e8c6bc429140"> 126</a></span>  <span class="keywordtype">bool</span> <a class="code" href="_nv_flex_8h.html#a8f0ee62a14387dd5b5a4e8c6bc429140">fluid</a>; </div> +<div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a3ef4d1035530c3583bdf983c7e62b472"> 127</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a3ef4d1035530c3583bdf983c7e62b472">cohesion</a>; </div> +<div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a5628f890f4ae070e405feaf1f81a7b85"> 128</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a5628f890f4ae070e405feaf1f81a7b85">surfaceTension</a>; </div> +<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a40f452b4edbf11b793f31286a0ae270e"> 129</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a40f452b4edbf11b793f31286a0ae270e">viscosity</a>; </div> +<div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ae763dd9bfcfa4092c0165a506e32e18b"> 130</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ae763dd9bfcfa4092c0165a506e32e18b">vorticityConfinement</a>; </div> +<div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a608af97e77a912e959b0e825082a9cd6"> 131</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a608af97e77a912e959b0e825082a9cd6">anisotropyScale</a>; </div> +<div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab136ae1511a39ef570c010f321eff206"> 132</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ab136ae1511a39ef570c010f321eff206">anisotropyMin</a>; </div> +<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a5e37444b8c96e0880a428d9ea58dbf54"> 133</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a5e37444b8c96e0880a428d9ea58dbf54">anisotropyMax</a>; </div> +<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ac017e05107d0362d3d03a14eaadf0657"> 134</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ac017e05107d0362d3d03a14eaadf0657">smoothing</a>; </div> +<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a3f93fba688338576ff3258b034525dc5"> 135</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a3f93fba688338576ff3258b034525dc5">solidPressure</a>; </div> +<div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a05f92015449662f5a2f5d5e9ecdc2c6e"> 136</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a05f92015449662f5a2f5d5e9ecdc2c6e">freeSurfaceDrag</a>; </div> +<div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ae2e480822cc06ec249ee2557f6cc8ee1"> 137</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ae2e480822cc06ec249ee2557f6cc8ee1">buoyancy</a>; </div> +<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div> +<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// diffuse params</span></div> +<div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#acdde802d58e1558c03e449e04ae33f15"> 140</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#acdde802d58e1558c03e449e04ae33f15">diffuseThreshold</a>; </div> +<div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a5be673031b100c3861fd9eb824fcf00f"> 141</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a5be673031b100c3861fd9eb824fcf00f">diffuseBuoyancy</a>; </div> +<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a4bf0ccff128c165560dba52afb748d7e"> 142</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a4bf0ccff128c165560dba52afb748d7e">diffuseDrag</a>; </div> +<div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a7ade7491cd0693a6d7c5e88a99298378"> 143</a></span>  <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#a7ade7491cd0693a6d7c5e88a99298378">diffuseBallistic</a>; </div> +<div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a7bed2ff24c30c76aed0923809fc16d8c"> 144</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a7bed2ff24c30c76aed0923809fc16d8c">diffuseSortAxis</a>[3]; </div> +<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a469950744e0b7222969762a89b992255"> 145</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a469950744e0b7222969762a89b992255">diffuseLifetime</a>; </div> +<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div> +<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// rigid params</span></div> +<div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a3a1f5e2ba6c8cad0bc3f3eebd27415f0"> 148</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a3a1f5e2ba6c8cad0bc3f3eebd27415f0">plasticThreshold</a>; </div> +<div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a42346069505d3bba70bcdf0a94f0615c"> 149</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a42346069505d3bba70bcdf0a94f0615c">plasticCreep</a>; </div> +<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div> +<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// collision params</span></div> +<div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a55bf1f547086b8e469f2c3b20c9ae39d"> 152</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a55bf1f547086b8e469f2c3b20c9ae39d">collisionDistance</a>; </div> +<div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#aeecd11525503649b579ae262b671fbc8"> 153</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#aeecd11525503649b579ae262b671fbc8">particleCollisionMargin</a>; </div> +<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0e4cb2f91d3b7d122000d36a7d67ab81"> 154</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a0e4cb2f91d3b7d122000d36a7d67ab81">shapeCollisionMargin</a>; </div> +<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div> +<div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ae54ff0cacfedd4333aa1a1f9b9291906"> 156</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ae54ff0cacfedd4333aa1a1f9b9291906">planes</a>[8][4]; </div> +<div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab4f2eb16c8aba6371fbae51a991eaaa5"> 157</a></span>  <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#ab4f2eb16c8aba6371fbae51a991eaaa5">numPlanes</a>; </div> +<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div> +<div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ac2f8dff9857a86683aa6e55c058888d7"> 159</a></span>  <a class="code" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3b">NvFlexRelaxationMode</a> <a class="code" href="_nv_flex_8h.html#ac2f8dff9857a86683aa6e55c058888d7">relaxationMode</a>;</div> +<div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a8a1b3c24aa73606bcd47a72473db9629"> 160</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a8a1b3c24aa73606bcd47a72473db9629">relaxationFactor</a>; </div> +<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> };</div> +<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div> +<div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644"> 166</a></span> <span class="keyword">enum</span> <a class="code" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644">NvFlexPhase</a></div> +<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> {</div> +<div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644ad108f6ebf28346813cfd3602d984bb32"> 168</a></span>  <a class="code" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644ad108f6ebf28346813cfd3602d984bb32">eNvFlexPhaseGroupMask</a> = 0x00ffffff, </div> +<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div> +<div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a453a23cc8e9d2e6097b5be187f3c6977"> 170</a></span>  <a class="code" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a453a23cc8e9d2e6097b5be187f3c6977">eNvFlexPhaseSelfCollide</a> = 1 << 24, </div> +<div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a76a62d3a5df428f18e01f8b37573a7b1"> 171</a></span>  <a class="code" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a76a62d3a5df428f18e01f8b37573a7b1">eNvFlexPhaseSelfCollideFilter</a> = 1 << 25, </div> +<div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a1728772beb1746ace4c549b2ed8f1d74"> 172</a></span>  <a class="code" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a1728772beb1746ace4c549b2ed8f1d74">eNvFlexPhaseFluid</a> = 1 << 26, </div> +<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> };</div> +<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div> +<div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#af53fa9d7caef50db346475065504848d"> 178</a></span> NV_FLEX_API <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#af53fa9d7caef50db346475065504848d">NvFlexMakePhase</a>(<span class="keywordtype">int</span> group, <span class="keywordtype">int</span> flags) { <span class="keywordflow">return</span> (group & <a class="code" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644ad108f6ebf28346813cfd3602d984bb32">eNvFlexPhaseGroupMask</a>) | flags; }</div> +<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div> +<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div> +<div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 184</a></span> <span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#struct_nv_flex_timers">NvFlexTimers</a></div> +<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> {</div> +<div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#aaf8baa00e709ff8fd40d114f00bee0b6"> 186</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#aaf8baa00e709ff8fd40d114f00bee0b6">predict</a>; </div> +<div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#aba34bc2bc8736e3a0cf18a7a6b56ff68"> 187</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#aba34bc2bc8736e3a0cf18a7a6b56ff68">createCellIndices</a>; </div> +<div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ae45cb18deec2db8ff44d181e80f24695"> 188</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ae45cb18deec2db8ff44d181e80f24695">sortCellIndices</a>; </div> +<div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a98b4df3721709c862ef5d09edcc6d4c3"> 189</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a98b4df3721709c862ef5d09edcc6d4c3">createGrid</a>; </div> +<div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a6071050991cf71a8d9ff28ea968479af"> 190</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a6071050991cf71a8d9ff28ea968479af">reorder</a>; </div> +<div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ac1f3c3a1eeeb57cf5b20d030a788e25c"> 191</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ac1f3c3a1eeeb57cf5b20d030a788e25c">collideParticles</a>; </div> +<div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ae4203fb9cf4772c3186f96cc2d9f6ea8"> 192</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ae4203fb9cf4772c3186f96cc2d9f6ea8">collideShapes</a>; </div> +<div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#afc20d27121f49b61be9cc6bd4c25f547"> 193</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#afc20d27121f49b61be9cc6bd4c25f547">collideTriangles</a>; </div> +<div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#aaa36ba5ee44e34e762167fb0b8b3292e"> 194</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#aaa36ba5ee44e34e762167fb0b8b3292e">collideFields</a>; </div> +<div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a49f7117a457a716e7790904209f68707"> 195</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a49f7117a457a716e7790904209f68707">calculateDensity</a>; </div> +<div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#abe52b62e7af361f387d67414b9e2cf9b"> 196</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#abe52b62e7af361f387d67414b9e2cf9b">solveDensities</a>; </div> +<div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a4d10188e917ae045e0e903f3db1c638d"> 197</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a4d10188e917ae045e0e903f3db1c638d">solveVelocities</a>; </div> +<div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#abdd60b0a83674283d09b4897fdd637a2"> 198</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#abdd60b0a83674283d09b4897fdd637a2">solveShapes</a>; </div> +<div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a57e4d27b0aa8774e479fa66d65079f78"> 199</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a57e4d27b0aa8774e479fa66d65079f78">solveSprings</a>; </div> +<div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a215e06106ec0cdbbcd405055a4535d1d"> 200</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a215e06106ec0cdbbcd405055a4535d1d">solveContacts</a>; </div> +<div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a75eade1512d023cb19da5b7ebbad10f3"> 201</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a75eade1512d023cb19da5b7ebbad10f3">solveInflatables</a>; </div> +<div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#afc5d58e7f591213c3fe1c31b4d440eb6"> 202</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#afc5d58e7f591213c3fe1c31b4d440eb6">applyDeltas</a>; </div> +<div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#af9b72d2909ef335b12a46cdbd4b71f57"> 203</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#af9b72d2909ef335b12a46cdbd4b71f57">calculateAnisotropy</a>; </div> +<div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a2ff723870a6eba26d9f3bb7e5250b27f"> 204</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a2ff723870a6eba26d9f3bb7e5250b27f">updateDiffuse</a>; </div> +<div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a8cb34cbcf9def6817d6d5d3c07177052"> 205</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a8cb34cbcf9def6817d6d5d3c07177052">updateTriangles</a>; </div> +<div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a1a1e69f26e02e8b3fca1d3636a7f3f13"> 206</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a1a1e69f26e02e8b3fca1d3636a7f3f13">updateNormals</a>; </div> +<div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a9d825db54bc9a0bca998b3654db3b20e"> 207</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a9d825db54bc9a0bca998b3654db3b20e">finalize</a>; </div> +<div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a2f85189cbc3014b73164cf8c4eb87e0a"> 208</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a2f85189cbc3014b73164cf8c4eb87e0a">updateBounds</a>; </div> +<div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a3c4d2aa395ff8d0f70a6380448943be2"> 209</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a3c4d2aa395ff8d0f70a6380448943be2">total</a>; </div> +<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> };</div> +<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div> +<div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfca"> 215</a></span> <span class="keyword">enum</span> <a class="code" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfca">NvFlexErrorSeverity</a></div> +<div class="line"><a name="l00216"></a><span class="lineno"> 216</span> {</div> +<div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8aed6496f033604148138299fa075edd"> 217</a></span>  <a class="code" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8aed6496f033604148138299fa075edd">eNvFlexLogError</a> = 0, </div> +<div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa03d239332ae87f46270855dd06b6e58f"> 218</a></span>  <a class="code" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa03d239332ae87f46270855dd06b6e58f">eNvFlexLogInfo</a> = 1, </div> +<div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa5538835c4767004ba5fd443ada08ea61"> 219</a></span>  <a class="code" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa5538835c4767004ba5fd443ada08ea61">eNvFlexLogWarning</a> = 2, </div> +<div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa77b51759e33d60b2caf327bb4835351e"> 220</a></span>  <a class="code" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa77b51759e33d60b2caf327bb4835351e">eNvFlexLogDebug</a> = 4, </div> +<div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8feff72c0b0391e8adf3ddb6c39ef10e"> 221</a></span>  <a class="code" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8feff72c0b0391e8adf3ddb6c39ef10e">eNvFlexLogAll</a> = -1, </div> +<div class="line"><a name="l00222"></a><span class="lineno"> 222</span> };</div> +<div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div> +<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  </div> +<div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9"> 227</a></span> <span class="keyword">enum</span> <a class="code" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9">NvFlexSolverCallbackStage</a></div> +<div class="line"><a name="l00228"></a><span class="lineno"> 228</span> {</div> +<div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a9f3914fdb03915a14ebe55a2c730e7ff"> 229</a></span>  <a class="code" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a9f3914fdb03915a14ebe55a2c730e7ff">eNvFlexStageIterationStart</a>, </div> +<div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9ab75a912c3990b0fbd6b06a6741a20e69"> 230</a></span>  <a class="code" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9ab75a912c3990b0fbd6b06a6741a20e69">eNvFlexStageIterationEnd</a>, </div> +<div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a79ce9005dbc92198a1f180c6afde6a44"> 231</a></span>  <a class="code" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a79ce9005dbc92198a1f180c6afde6a44">eNvFlexStageSubstepBegin</a>, </div> +<div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a6f13e2ebdbf21f8c8ebcfe1ac9160586"> 232</a></span>  <a class="code" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a6f13e2ebdbf21f8c8ebcfe1ac9160586">eNvFlexStageSubstepEnd</a>, </div> +<div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a260340ba9071892bd8795c3b29289806"> 233</a></span>  <a class="code" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a260340ba9071892bd8795c3b29289806">eNvFlexStageUpdateEnd</a>, </div> +<div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a1f2e7acff9b3b74922f90240d29fd1b3"> 234</a></span>  <a class="code" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a1f2e7acff9b3b74922f90240d29fd1b3">eNvFlexStageCount</a>, </div> +<div class="line"><a name="l00235"></a><span class="lineno"> 235</span> };</div> +<div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div> +<div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252"> 239</a></span> <span class="keyword">enum</span> <a class="code" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252">NvFlexComputeType</a></div> +<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> {</div> +<div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252ad0c27f7aafdc4fe569722025c8eb2178"> 241</a></span>  <a class="code" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252ad0c27f7aafdc4fe569722025c8eb2178">eNvFlexCUDA</a>, </div> +<div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a297a93979a88fda6e6b551dcab5fb3df"> 242</a></span>  <a class="code" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a297a93979a88fda6e6b551dcab5fb3df">eNvFlexD3D11</a>, </div> +<div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a15e78a7baf13cc7fd73f255ac84f0943"> 243</a></span>  <a class="code" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a15e78a7baf13cc7fd73f255ac84f0943">eNvFlexD3D12</a>, </div> +<div class="line"><a name="l00244"></a><span class="lineno"> 244</span> };</div> +<div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div> +<div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 258</a></span> <span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#struct_nv_flex_solver_callback_params">NvFlexSolverCallbackParams</a></div> +<div class="line"><a name="l00259"></a><span class="lineno"> 259</span> {</div> +<div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a3974e1e608d9f532d5520dc158b47903"> 260</a></span>  <a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* <a class="code" href="_nv_flex_8h.html#a3974e1e608d9f532d5520dc158b47903">solver</a>; </div> +<div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a5b9af9cf4d889b4772cb61cefda92a87"> 261</a></span>  <span class="keywordtype">void</span>* <a class="code" href="_nv_flex_8h.html#a5b9af9cf4d889b4772cb61cefda92a87">userData</a>; </div> +<div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div> +<div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a8ed42f9bd016cbcef45c96b5b32ca609"> 263</a></span>  <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_8h.html#a8ed42f9bd016cbcef45c96b5b32ca609">particles</a>; </div> +<div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ac48a490fa3d62cc678c309dd4b8cbf18"> 264</a></span>  <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_8h.html#ac48a490fa3d62cc678c309dd4b8cbf18">velocities</a>; </div> +<div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a9e5f943053d43d7e1a6b149babe4fe44"> 265</a></span>  <span class="keywordtype">int</span>* <a class="code" href="_nv_flex_8h.html#a9e5f943053d43d7e1a6b149babe4fe44">phases</a>; </div> +<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div> +<div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ac32019f7dd1f30ab8a7391a417ed02c9"> 267</a></span>  <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#ac32019f7dd1f30ab8a7391a417ed02c9">numActive</a>; </div> +<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  </div> +<div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a843360ebf23cd00e5eff72d19e796dd9"> 269</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a843360ebf23cd00e5eff72d19e796dd9">dt</a>; </div> +<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div> +<div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#abe564dbbbd4957542322b60d77a70e29"> 271</a></span>  <span class="keyword">const</span> <span class="keywordtype">int</span>* <a class="code" href="_nv_flex_8h.html#abe564dbbbd4957542322b60d77a70e29">originalToSortedMap</a>; </div> +<div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a9b65813d2a2d3f99db162d39a62481f8"> 272</a></span>  <span class="keyword">const</span> <span class="keywordtype">int</span>* <a class="code" href="_nv_flex_8h.html#a9b65813d2a2d3f99db162d39a62481f8">sortedToOriginalMap</a>; </div> +<div class="line"><a name="l00273"></a><span class="lineno"> 273</span> };</div> +<div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div> +<div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 277</a></span> <span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#struct_nv_flex_init_desc">NvFlexInitDesc</a></div> +<div class="line"><a name="l00278"></a><span class="lineno"> 278</span> {</div> +<div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a5890b9e46d626cfa19994976ea53c52e"> 279</a></span>  <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#a5890b9e46d626cfa19994976ea53c52e">deviceIndex</a>; </div> +<div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a23b8779c1516647ef5ed7f8010d619ff"> 280</a></span>  <span class="keywordtype">bool</span> <a class="code" href="_nv_flex_8h.html#a23b8779c1516647ef5ed7f8010d619ff">enableExtensions</a>; </div> +<div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a7e760844341b78a547ca4e29abf48806"> 281</a></span>  <span class="keywordtype">void</span>* <a class="code" href="_nv_flex_8h.html#a7e760844341b78a547ca4e29abf48806">renderDevice</a>; </div> +<div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#abf304d5c1f8f041fa46a2bfb0bdf56fe"> 282</a></span>  <span class="keywordtype">void</span>* <a class="code" href="_nv_flex_8h.html#abf304d5c1f8f041fa46a2bfb0bdf56fe">renderContext</a>; </div> +<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  </div> +<div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#aeeeaf91dad0804d1dd3125e592a3260b"> 284</a></span>  <a class="code" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252">NvFlexComputeType</a> <a class="code" href="_nv_flex_8h.html#aeeeaf91dad0804d1dd3125e592a3260b">computeType</a>; </div> +<div class="line"><a name="l00285"></a><span class="lineno"> 285</span> };</div> +<div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div> +<div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="struct_nv_flex_solver_callback.html"> 289</a></span> <span class="keyword">struct </span><a class="code" href="struct_nv_flex_solver_callback.html">NvFlexSolverCallback</a></div> +<div class="line"><a name="l00290"></a><span class="lineno"> 290</span> {</div> +<div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="struct_nv_flex_solver_callback.html#a2878301f697313b3ef3ad1bc2410c915"> 292</a></span>  <span class="keywordtype">void</span>* <a class="code" href="struct_nv_flex_solver_callback.html#a2878301f697313b3ef3ad1bc2410c915">userData</a>;</div> +<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  </div> +<div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="struct_nv_flex_solver_callback.html#a728134bf4d667b207539d7318e42e92a"> 295</a></span>  void (*<span class="keyword">function</span>)(<a class="code" href="_nv_flex_8h.html#struct_nv_flex_solver_callback_params">NvFlexSolverCallbackParams</a> params);</div> +<div class="line"><a name="l00296"></a><span class="lineno"> 296</span> };</div> +<div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div> +<div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#abe6f00c9b94debbf7c181082a14076d5"> 301</a></span> <span class="keyword">typedef</span> void (*<a class="code" href="_nv_flex_8h.html#abe6f00c9b94debbf7c181082a14076d5">NvFlexErrorCallback</a>)(<a class="code" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfca">NvFlexErrorSeverity</a> type, <span class="keyword">const</span> <span class="keywordtype">char</span>* msg, <span class="keyword">const</span> <span class="keywordtype">char</span>* file, <span class="keywordtype">int</span> line);</div> +<div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div> +<div class="line"><a name="l00312"></a><span class="lineno"> 312</span> NV_FLEX_API <a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* <a class="code" href="_nv_flex_8h.html#a687e5ec141948f779faa9183b68cb743">NvFlexInit</a>(<span class="keywordtype">int</span> version = NV_FLEX_VERSION, <a class="code" href="_nv_flex_8h.html#abe6f00c9b94debbf7c181082a14076d5">NvFlexErrorCallback</a> errorFunc = 0, <a class="code" href="_nv_flex_8h.html#struct_nv_flex_init_desc">NvFlexInitDesc</a> * desc = 0);</div> +<div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div> +<div class="line"><a name="l00320"></a><span class="lineno"> 320</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#aaf59e45ada57c7f958a8030099cbe211">NvFlexShutdown</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib);</div> +<div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div> +<div class="line"><a name="l00325"></a><span class="lineno"> 325</span> NV_FLEX_API <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#ac25ec5de38c177db51198bb620644d36">NvFlexGetVersion</a>();</div> +<div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div> +<div class="line"><a name="l00335"></a><span class="lineno"> 335</span> NV_FLEX_API <a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* <a class="code" href="_nv_flex_8h.html#af7f91fa47c779fcd8bee60061de6d31c">NvFlexCreateSolver</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, <span class="keywordtype">int</span> maxParticles, <span class="keywordtype">int</span> maxDiffuseParticles, <span class="keywordtype">int</span> maxNeighborsPerParticle = 96);</div> +<div class="line"><a name="l00341"></a><span class="lineno"> 341</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a1d755d7b090f7ed5c4c50d2d3fef1558">NvFlexDestroySolver</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver);</div> +<div class="line"><a name="l00342"></a><span class="lineno"> 342</span> </div> +<div class="line"><a name="l00349"></a><span class="lineno"> 349</span> NV_FLEX_API <a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* <a class="code" href="_nv_flex_8h.html#ae0d57e4fc2b3b51ec08f7da0a28ff343">NvFlexGetSolverLibrary</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver);</div> +<div class="line"><a name="l00350"></a><span class="lineno"> 350</span> </div> +<div class="line"><a name="l00359"></a><span class="lineno"> 359</span> NV_FLEX_API <a class="code" href="struct_nv_flex_solver_callback.html">NvFlexSolverCallback</a> <a class="code" href="_nv_flex_8h.html#ac5427457488ab3f2de91cf65335dda08">NvFlexRegisterSolverCallback</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="struct_nv_flex_solver_callback.html">NvFlexSolverCallback</a> <span class="keyword">function</span>, <a class="code" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9">NvFlexSolverCallbackStage</a> stage);</div> +<div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div> +<div class="line"><a name="l00420"></a><span class="lineno"> 420</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <span class="keywordtype">float</span> dt, <span class="keywordtype">int</span> substeps, <span class="keywordtype">bool</span> enableTimers);</div> +<div class="line"><a name="l00421"></a><span class="lineno"> 421</span> </div> +<div class="line"><a name="l00428"></a><span class="lineno"> 428</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ae2db6ad8006027c1acf2315a0d15fe71">NvFlexSetParams</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <span class="keyword">const</span> <a class="code" href="_nv_flex_8h.html#struct_nv_flex_params">NvFlexParams</a>* params);</div> +<div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div> +<div class="line"><a name="l00437"></a><span class="lineno"> 437</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a581b458848039220203547af53de128f">NvFlexGetParams</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#struct_nv_flex_params">NvFlexParams</a>* params);</div> +<div class="line"><a name="l00438"></a><span class="lineno"> 438</span> </div> +<div class="line"><a name="l00446"></a><span class="lineno"> 446</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#aea2af336bdd96d7168c3acdce6d1875d">NvFlexSetActive</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* indices, <span class="keywordtype">int</span> n);</div> +<div class="line"><a name="l00447"></a><span class="lineno"> 447</span> </div> +<div class="line"><a name="l00454"></a><span class="lineno"> 454</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#aeed8fe87fa073067af1a45560cc54a79">NvFlexGetActive</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* indices);</div> +<div class="line"><a name="l00455"></a><span class="lineno"> 455</span> </div> +<div class="line"><a name="l00462"></a><span class="lineno"> 462</span> NV_FLEX_API <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#a2345372dea2ad4f043153a84e7a2c407">NvFlexGetActiveCount</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver);</div> +<div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div> +<div class="line"><a name="l00472"></a><span class="lineno"> 472</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#abef057ac89ba5cf1cd71f0084f9313de">NvFlexSetParticles</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* p, <span class="keywordtype">int</span> n);</div> +<div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div> +<div class="line"><a name="l00481"></a><span class="lineno"> 481</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a84f06fff995d8eb034cff81c811fa312">NvFlexGetParticles</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* p, <span class="keywordtype">int</span> n);</div> +<div class="line"><a name="l00482"></a><span class="lineno"> 482</span> </div> +<div class="line"><a name="l00492"></a><span class="lineno"> 492</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#aa457096286567a37d4f1d5f4857d9296">NvFlexSetRestParticles</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* p, <span class="keywordtype">int</span> n);</div> +<div class="line"><a name="l00493"></a><span class="lineno"> 493</span> </div> +<div class="line"><a name="l00502"></a><span class="lineno"> 502</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#affb884bcf3e7e389812d0b52b0fc0490">NvFlexGetRestParticles</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* p, <span class="keywordtype">int</span> n);</div> +<div class="line"><a name="l00503"></a><span class="lineno"> 503</span> </div> +<div class="line"><a name="l00504"></a><span class="lineno"> 504</span> </div> +<div class="line"><a name="l00512"></a><span class="lineno"> 512</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#abfa62e01c4f4511d3f6a00ab6a0f257a">NvFlexGetSmoothParticles</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* p, <span class="keywordtype">int</span> n);</div> +<div class="line"><a name="l00513"></a><span class="lineno"> 513</span> </div> +<div class="line"><a name="l00522"></a><span class="lineno"> 522</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#afe09e63d22c5156fe24cd2d2bc069c04">NvFlexSetVelocities</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* v, <span class="keywordtype">int</span> n);</div> +<div class="line"><a name="l00530"></a><span class="lineno"> 530</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a67bd9669086e823ebe33d08d14f5b2b9">NvFlexGetVelocities</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* v, <span class="keywordtype">int</span> n);</div> +<div class="line"><a name="l00531"></a><span class="lineno"> 531</span> </div> +<div class="line"><a name="l00548"></a><span class="lineno"> 548</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a3117f92571613709936291c48414e521">NvFlexSetPhases</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* phases, <span class="keywordtype">int</span> n);</div> +<div class="line"><a name="l00556"></a><span class="lineno"> 556</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a15b7a5449bee38bbe5dcaf23690f09f5">NvFlexGetPhases</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* phases, <span class="keywordtype">int</span> n);</div> +<div class="line"><a name="l00557"></a><span class="lineno"> 557</span> </div> +<div class="line"><a name="l00566"></a><span class="lineno"> 566</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#add03fd357383845f07e0596290faf316">NvFlexSetNormals</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* normals, <span class="keywordtype">int</span> n);</div> +<div class="line"><a name="l00567"></a><span class="lineno"> 567</span> </div> +<div class="line"><a name="l00575"></a><span class="lineno"> 575</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#aadb2a0cf125e4a6b2f3443ab7dcbd3d4">NvFlexGetNormals</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* normals, <span class="keywordtype">int</span> n);</div> +<div class="line"><a name="l00576"></a><span class="lineno"> 576</span> </div> +<div class="line"><a name="l00577"></a><span class="lineno"> 577</span> </div> +<div class="line"><a name="l00590"></a><span class="lineno"> 590</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ae67c0cab2ecee8eb9485a26ef0fad6a9">NvFlexSetSprings</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* indices, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* restLengths, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* stiffness, <span class="keywordtype">int</span> numSprings);</div> +<div class="line"><a name="l00600"></a><span class="lineno"> 600</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#aab5f90f4024d71d08c3f9327c6d8c184">NvFlexGetSprings</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* indices, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* restLengths, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* stiffness, <span class="keywordtype">int</span> numSprings);</div> +<div class="line"><a name="l00601"></a><span class="lineno"> 601</span> </div> +<div class="line"><a name="l00618"></a><span class="lineno"> 618</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a89c872e761a53c87375f536a0ef597d8">NvFlexSetRigids</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* offsets, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* indices, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* restPositions, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* restNormals, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* stiffness, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* rotations, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* translations, <span class="keywordtype">int</span> numRigids, <span class="keywordtype">int</span> numIndices);</div> +<div class="line"><a name="l00619"></a><span class="lineno"> 619</span> </div> +<div class="line"><a name="l00620"></a><span class="lineno"> 620</span> </div> +<div class="line"><a name="l00628"></a><span class="lineno"> 628</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a3eafe7fe6b200c757c7402eca7d13f6d">NvFlexGetRigidTransforms</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* rotations, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* translations);</div> +<div class="line"><a name="l00629"></a><span class="lineno"> 629</span> </div> +<div class="line"><a name="l00633"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0"> 633</a></span> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a>;</div> +<div class="line"><a name="l00634"></a><span class="lineno"> 634</span> </div> +<div class="line"><a name="l00638"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade"> 638</a></span> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlexDistanceFieldId</a>;</div> +<div class="line"><a name="l00639"></a><span class="lineno"> 639</span> </div> +<div class="line"><a name="l00645"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586"> 645</a></span> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a>;</div> +<div class="line"><a name="l00646"></a><span class="lineno"> 646</span> </div> +<div class="line"><a name="l00653"></a><span class="lineno"> 653</span> NV_FLEX_API NvFlexTriangleMeshId <a class="code" href="_nv_flex_8h.html#afdda5a5210938a1e8a7c3a8218ad468e">NvFlexCreateTriangleMesh</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib);</div> +<div class="line"><a name="l00654"></a><span class="lineno"> 654</span> </div> +<div class="line"><a name="l00661"></a><span class="lineno"> 661</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a4cb4462803ebff105d151fd45b4efad6">NvFlexDestroyTriangleMesh</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, NvFlexTriangleMeshId mesh);</div> +<div class="line"><a name="l00662"></a><span class="lineno"> 662</span> </div> +<div class="line"><a name="l00676"></a><span class="lineno"> 676</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a4958c555f0ed65dee54c37af32529356">NvFlexUpdateTriangleMesh</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, NvFlexTriangleMeshId mesh, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* vertices, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* indices, <span class="keywordtype">int</span> numVertices, <span class="keywordtype">int</span> numTriangles, <span class="keyword">const</span> <span class="keywordtype">float</span>* lower, <span class="keyword">const</span> <span class="keywordtype">float</span>* upper);</div> +<div class="line"><a name="l00677"></a><span class="lineno"> 677</span> </div> +<div class="line"><a name="l00686"></a><span class="lineno"> 686</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a60794d849b4184335e2a0ddec0a9e6a2">NvFlexGetTriangleMeshBounds</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, <span class="keyword">const</span> NvFlexTriangleMeshId mesh, <span class="keywordtype">float</span>* lower, <span class="keywordtype">float</span>* upper);</div> +<div class="line"><a name="l00687"></a><span class="lineno"> 687</span> </div> +<div class="line"><a name="l00694"></a><span class="lineno"> 694</span> NV_FLEX_API NvFlexDistanceFieldId <a class="code" href="_nv_flex_8h.html#a5c28caf6d5d513c5adacd4fbc782f308">NvFlexCreateDistanceField</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib);</div> +<div class="line"><a name="l00695"></a><span class="lineno"> 695</span> </div> +<div class="line"><a name="l00702"></a><span class="lineno"> 702</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ab11bdd7f778d17af16cefea33265cb65">NvFlexDestroyDistanceField</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, NvFlexDistanceFieldId sdf);</div> +<div class="line"><a name="l00703"></a><span class="lineno"> 703</span> </div> +<div class="line"><a name="l00715"></a><span class="lineno"> 715</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a584ffb275b9986fd5444ed1a7ea247d9">NvFlexUpdateDistanceField</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, NvFlexDistanceFieldId sdf, <span class="keywordtype">int</span> dimx, <span class="keywordtype">int</span> dimy, <span class="keywordtype">int</span> dimz, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* field);</div> +<div class="line"><a name="l00716"></a><span class="lineno"> 716</span> </div> +<div class="line"><a name="l00723"></a><span class="lineno"> 723</span> NV_FLEX_API NvFlexConvexMeshId <a class="code" href="_nv_flex_8h.html#afbaafe2b1006352002b03aabaca531cc">NvFlexCreateConvexMesh</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib);</div> +<div class="line"><a name="l00724"></a><span class="lineno"> 724</span> </div> +<div class="line"><a name="l00731"></a><span class="lineno"> 731</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ac85b6372e5c7bfc508ecb7b8c59c72a0">NvFlexDestroyConvexMesh</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, NvFlexConvexMeshId convex);</div> +<div class="line"><a name="l00732"></a><span class="lineno"> 732</span> </div> +<div class="line"><a name="l00743"></a><span class="lineno"> 743</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a69289002a6f8ecd697118f0ec6572f5d">NvFlexUpdateConvexMesh</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, NvFlexConvexMeshId convex, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* planes, <span class="keywordtype">int</span> numPlanes, <span class="keywordtype">float</span>* lower, <span class="keywordtype">float</span>* upper);</div> +<div class="line"><a name="l00744"></a><span class="lineno"> 744</span> </div> +<div class="line"><a name="l00753"></a><span class="lineno"> 753</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ad56e661161763579afb375b3841eb5ff">NvFlexGetConvexMeshBounds</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, NvFlexConvexMeshId mesh, <span class="keywordtype">float</span>* lower, <span class="keywordtype">float</span>* upper);</div> +<div class="line"><a name="l00754"></a><span class="lineno"> 754</span> </div> +<div class="line"><a name="l00758"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 758</a></span> <span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#struct_nv_flex_sphere_geometry">NvFlexSphereGeometry</a></div> +<div class="line"><a name="l00759"></a><span class="lineno"> 759</span> {</div> +<div class="line"><a name="l00760"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a7a6e24c01235abc364ed12570ab15f84"> 760</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a7a6e24c01235abc364ed12570ab15f84">radius</a>;</div> +<div class="line"><a name="l00761"></a><span class="lineno"> 761</span> };</div> +<div class="line"><a name="l00762"></a><span class="lineno"> 762</span> </div> +<div class="line"><a name="l00766"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 766</a></span> <span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#struct_nv_flex_capsule_geometry">NvFlexCapsuleGeometry</a></div> +<div class="line"><a name="l00767"></a><span class="lineno"> 767</span> {</div> +<div class="line"><a name="l00768"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a1241ff3522eafac4b402370a7a6525d8"> 768</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a1241ff3522eafac4b402370a7a6525d8">radius</a>;</div> +<div class="line"><a name="l00769"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#aef1b5bceccca709ebb782d2ea8a61dc9"> 769</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#aef1b5bceccca709ebb782d2ea8a61dc9">halfHeight</a>;</div> +<div class="line"><a name="l00770"></a><span class="lineno"> 770</span> };</div> +<div class="line"><a name="l00771"></a><span class="lineno"> 771</span> </div> +<div class="line"><a name="l00775"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 775</a></span> <span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#struct_nv_flex_box_geometry">NvFlexBoxGeometry</a></div> +<div class="line"><a name="l00776"></a><span class="lineno"> 776</span> {</div> +<div class="line"><a name="l00777"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab669c404607156367b09878870dbe30c"> 777</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ab669c404607156367b09878870dbe30c">halfExtents</a>[3];</div> +<div class="line"><a name="l00778"></a><span class="lineno"> 778</span> };</div> +<div class="line"><a name="l00779"></a><span class="lineno"> 779</span> </div> +<div class="line"><a name="l00783"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 783</a></span> <span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#struct_nv_flex_convex_mesh_geometry">NvFlexConvexMeshGeometry</a></div> +<div class="line"><a name="l00784"></a><span class="lineno"> 784</span> {</div> +<div class="line"><a name="l00785"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a800620cc4888bbe5696c5f0e19b22bb9"> 785</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a800620cc4888bbe5696c5f0e19b22bb9">scale</a>[3];</div> +<div class="line"><a name="l00786"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#abdc984644770fec15d7af740c9730186"> 786</a></span>  NvFlexConvexMeshId <a class="code" href="_nv_flex_8h.html#abdc984644770fec15d7af740c9730186">mesh</a>;</div> +<div class="line"><a name="l00787"></a><span class="lineno"> 787</span> };</div> +<div class="line"><a name="l00788"></a><span class="lineno"> 788</span> </div> +<div class="line"><a name="l00792"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 792</a></span> <span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#struct_nv_flex_triangle_mesh_geometry">NvFlexTriangleMeshGeometry</a></div> +<div class="line"><a name="l00793"></a><span class="lineno"> 793</span> {</div> +<div class="line"><a name="l00794"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab6e2aa06b69e92cbd3b2bca19f18e794"> 794</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ab6e2aa06b69e92cbd3b2bca19f18e794">scale</a>[3]; </div> +<div class="line"><a name="l00795"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#af6a50e64591866ae2390a57e3342566c"> 795</a></span>  NvFlexTriangleMeshId <a class="code" href="_nv_flex_8h.html#af6a50e64591866ae2390a57e3342566c">mesh</a>; </div> +<div class="line"><a name="l00796"></a><span class="lineno"> 796</span> };</div> +<div class="line"><a name="l00797"></a><span class="lineno"> 797</span> </div> +<div class="line"><a name="l00802"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 802</a></span> <span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#struct_nv_flex_s_d_f_geometry">NvFlexSDFGeometry</a></div> +<div class="line"><a name="l00803"></a><span class="lineno"> 803</span> {</div> +<div class="line"><a name="l00804"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0008a52f6ae1e17c436b095549bf1c78"> 804</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a0008a52f6ae1e17c436b095549bf1c78">scale</a>; </div> +<div class="line"><a name="l00805"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0a6936f3cb0544ad624f1dea6b7eb50c"> 805</a></span>  NvFlexDistanceFieldId <a class="code" href="_nv_flex_8h.html#a0a6936f3cb0544ad624f1dea6b7eb50c">field</a>; </div> +<div class="line"><a name="l00806"></a><span class="lineno"> 806</span> };</div> +<div class="line"><a name="l00807"></a><span class="lineno"> 807</span> </div> +<div class="line"><a name="l00812"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 812</a></span> <span class="keyword">union </span><a class="code" href="_nv_flex_8h.html#union_nv_flex_collision_geometry">NvFlexCollisionGeometry</a></div> +<div class="line"><a name="l00813"></a><span class="lineno"> 813</span> {</div> +<div class="line"><a name="l00814"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0e3c0e02ec7addd25ebb3355a8865bfb"> 814</a></span>  <a class="code" href="_nv_flex_8h.html#struct_nv_flex_sphere_geometry">NvFlexSphereGeometry</a> <a class="code" href="_nv_flex_8h.html#a0e3c0e02ec7addd25ebb3355a8865bfb">sphere</a>;</div> +<div class="line"><a name="l00815"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a8ad5aa3c9c9456607de9a2c9f1d0d2c1"> 815</a></span>  <a class="code" href="_nv_flex_8h.html#struct_nv_flex_capsule_geometry">NvFlexCapsuleGeometry</a> <a class="code" href="_nv_flex_8h.html#a8ad5aa3c9c9456607de9a2c9f1d0d2c1">capsule</a>;</div> +<div class="line"><a name="l00816"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a53e827707abaf2e03b78c3c88469d7bf"> 816</a></span>  <a class="code" href="_nv_flex_8h.html#struct_nv_flex_box_geometry">NvFlexBoxGeometry</a> <a class="code" href="_nv_flex_8h.html#a53e827707abaf2e03b78c3c88469d7bf">box</a>;</div> +<div class="line"><a name="l00817"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ae701fdcc0e7bf26c1dfc54d400ffb3d2"> 817</a></span>  <a class="code" href="_nv_flex_8h.html#struct_nv_flex_convex_mesh_geometry">NvFlexConvexMeshGeometry</a> <a class="code" href="_nv_flex_8h.html#ae701fdcc0e7bf26c1dfc54d400ffb3d2">convexMesh</a>;</div> +<div class="line"><a name="l00818"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a064e3ce30320610d495ba3faa72dc8d6"> 818</a></span>  <a class="code" href="_nv_flex_8h.html#struct_nv_flex_triangle_mesh_geometry">NvFlexTriangleMeshGeometry</a> <a class="code" href="_nv_flex_8h.html#a064e3ce30320610d495ba3faa72dc8d6">triMesh</a>;</div> +<div class="line"><a name="l00819"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ac0049037dcff7a769030acd567eac6cd"> 819</a></span>  <a class="code" href="_nv_flex_8h.html#struct_nv_flex_s_d_f_geometry">NvFlexSDFGeometry</a> <a class="code" href="_nv_flex_8h.html#ac0049037dcff7a769030acd567eac6cd">sdf</a>;</div> +<div class="line"><a name="l00820"></a><span class="lineno"> 820</span> };</div> +<div class="line"><a name="l00821"></a><span class="lineno"> 821</span> </div> +<div class="line"><a name="l00822"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26ba"> 822</a></span> <span class="keyword">enum</span> <a class="code" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26ba">NvFlexCollisionShapeType</a></div> +<div class="line"><a name="l00823"></a><span class="lineno"> 823</span> {</div> +<div class="line"><a name="l00824"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baae22144512ae098865c6725af16a68ad3"> 824</a></span>  <a class="code" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baae22144512ae098865c6725af16a68ad3">eNvFlexShapeSphere</a> = 0, </div> +<div class="line"><a name="l00825"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1724c140b583fbf2c11c14a24dd3764a"> 825</a></span>  <a class="code" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1724c140b583fbf2c11c14a24dd3764a">eNvFlexShapeCapsule</a> = 1, </div> +<div class="line"><a name="l00826"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baab17c8dd4f9500016b77a9b49de3c48e7"> 826</a></span>  <a class="code" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baab17c8dd4f9500016b77a9b49de3c48e7">eNvFlexShapeBox</a> = 2, </div> +<div class="line"><a name="l00827"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baaed52f0e803c6745ffc1a5f018a8756ce"> 827</a></span>  <a class="code" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baaed52f0e803c6745ffc1a5f018a8756ce">eNvFlexShapeConvexMesh</a> = 3, </div> +<div class="line"><a name="l00828"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa315488da382a5e9794c83358385f7ae1"> 828</a></span>  <a class="code" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa315488da382a5e9794c83358385f7ae1">eNvFlexShapeTriangleMesh</a> = 4, </div> +<div class="line"><a name="l00829"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1fd78f8694b954f8d12fe7d911f17180"> 829</a></span>  <a class="code" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1fd78f8694b954f8d12fe7d911f17180">eNvFlexShapeSDF</a> = 5, </div> +<div class="line"><a name="l00830"></a><span class="lineno"> 830</span> };</div> +<div class="line"><a name="l00831"></a><span class="lineno"> 831</span> </div> +<div class="line"><a name="l00832"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304c"> 832</a></span> <span class="keyword">enum</span> <a class="code" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304c">NvFlexCollisionShapeFlags</a></div> +<div class="line"><a name="l00833"></a><span class="lineno"> 833</span> {</div> +<div class="line"><a name="l00834"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cae8a10737948abf6973f0f1d66bae7ef8"> 834</a></span>  <a class="code" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cae8a10737948abf6973f0f1d66bae7ef8">eNvFlexShapeFlagTypeMask</a> = 0x7, </div> +<div class="line"><a name="l00835"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cadc6740cf6d829fba159d92e43ffb5992"> 835</a></span>  <a class="code" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cadc6740cf6d829fba159d92e43ffb5992">eNvFlexShapeFlagDynamic</a> = 8, </div> +<div class="line"><a name="l00836"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304ca409215fa9b917f2d0830a66bd11b3ff8"> 836</a></span>  <a class="code" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304ca409215fa9b917f2d0830a66bd11b3ff8">eNvFlexShapeFlagTrigger</a> = 16, </div> +<div class="line"><a name="l00837"></a><span class="lineno"> 837</span> </div> +<div class="line"><a name="l00838"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304caa1c1225f6b8b2906c83748cfc46b81d9"> 838</a></span>  <a class="code" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304caa1c1225f6b8b2906c83748cfc46b81d9">eNvFlexShapeFlagReserved</a> = 0xffffff00</div> +<div class="line"><a name="l00839"></a><span class="lineno"> 839</span> };</div> +<div class="line"><a name="l00840"></a><span class="lineno"> 840</span> </div> +<div class="line"><a name="l00844"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ad6ee1e23e0c49aad63df8f605182de3a"> 844</a></span> NV_FLEX_API <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#ad6ee1e23e0c49aad63df8f605182de3a">NvFlexMakeShapeFlags</a>(<a class="code" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26ba">NvFlexCollisionShapeType</a> type, <span class="keywordtype">bool</span> dynamic) { <span class="keywordflow">return</span> type | (dynamic?<a class="code" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cadc6740cf6d829fba159d92e43ffb5992">eNvFlexShapeFlagDynamic</a>:0); }</div> +<div class="line"><a name="l00845"></a><span class="lineno"> 845</span> </div> +<div class="line"><a name="l00859"></a><span class="lineno"> 859</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#aea4e7117722df53dfe44c676496117fa">NvFlexSetShapes</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* geometry, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* shapePositions, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* shapeRotations, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* shapePrevPositions, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* shapePrevRotations, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* shapeFlags, <span class="keywordtype">int</span> numShapes);</div> +<div class="line"><a name="l00860"></a><span class="lineno"> 860</span> </div> +<div class="line"><a name="l00871"></a><span class="lineno"> 871</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#aa03d94be697cdc3aaa56e469d87255a4">NvFlexSetDynamicTriangles</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* indices, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* normals, <span class="keywordtype">int</span> numTris);</div> +<div class="line"><a name="l00880"></a><span class="lineno"> 880</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#abdfd0834422dd99154a27962614525e5">NvFlexGetDynamicTriangles</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* indices, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* normals, <span class="keywordtype">int</span> numTris);</div> +<div class="line"><a name="l00881"></a><span class="lineno"> 881</span> </div> +<div class="line"><a name="l00896"></a><span class="lineno"> 896</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a7f2b59fba77c60ce116e1eac57d63e50">NvFlexSetInflatables</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* startTris, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* numTris, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* restVolumes, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* overPressures, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* constraintScales, <span class="keywordtype">int</span> numInflatables);</div> +<div class="line"><a name="l00897"></a><span class="lineno"> 897</span> </div> +<div class="line"><a name="l00905"></a><span class="lineno"> 905</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a6f6f14e625dc744a127be81e6dc4cb74">NvFlexGetDensities</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* densities, <span class="keywordtype">int</span> n);</div> +<div class="line"><a name="l00906"></a><span class="lineno"> 906</span> </div> +<div class="line"><a name="l00920"></a><span class="lineno"> 920</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ae28167c680ad56dcff600ce0a223cec5">NvFlexGetAnisotropy</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* q1, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* q2, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* q3);</div> +<div class="line"><a name="l00930"></a><span class="lineno"> 930</span> NV_FLEX_API <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#a37ada4b95999cc253dfb049b99030d50">NvFlexGetDiffuseParticles</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* p, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* v, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* indices);</div> +<div class="line"><a name="l00931"></a><span class="lineno"> 931</span> </div> +<div class="line"><a name="l00942"></a><span class="lineno"> 942</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a5a7213593dd9a23d9d67f8517d1da9de">NvFlexSetDiffuseParticles</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* p, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* v, <span class="keywordtype">int</span> n);</div> +<div class="line"><a name="l00943"></a><span class="lineno"> 943</span> </div> +<div class="line"><a name="l00953"></a><span class="lineno"> 953</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a7edac9cf450917147b83e98f5cb09f5d">NvFlexGetContacts</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* planes, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* velocities, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* indices, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* counts);</div> +<div class="line"><a name="l00954"></a><span class="lineno"> 954</span> </div> +<div class="line"><a name="l00963"></a><span class="lineno"> 963</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ab1eec84a21b1872fba11c9b4cc1d1629">NvFlexGetBounds</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* lower, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* upper);</div> +<div class="line"><a name="l00964"></a><span class="lineno"> 964</span> </div> +<div class="line"><a name="l00973"></a><span class="lineno"> 973</span> NV_FLEX_API <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a221a4621ab98eca6ecd3368d288154a4">NvFlexGetDeviceLatency</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver);</div> +<div class="line"><a name="l00974"></a><span class="lineno"> 974</span> </div> +<div class="line"><a name="l00985"></a><span class="lineno"> 985</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ab16b6d2e11e0ab417ee6c4cf16f0a27d">NvFlexGetTimers</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#struct_nv_flex_timers">NvFlexTimers</a>* timers);</div> +<div class="line"><a name="l00986"></a><span class="lineno"> 986</span> </div> +<div class="line"><a name="l00990"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 990</a></span> <span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#struct_nv_flex_detail_timer">NvFlexDetailTimer</a></div> +<div class="line"><a name="l00991"></a><span class="lineno"> 991</span> { </div> +<div class="line"><a name="l00992"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a3ddbb30a2fde4a2e9ccec7854300b1d4"> 992</a></span>  <span class="keywordtype">char</span>* <a class="code" href="_nv_flex_8h.html#a3ddbb30a2fde4a2e9ccec7854300b1d4">name</a>; </div> +<div class="line"><a name="l00993"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a83f6117fe98bc6426027a9b784fd737c"> 993</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a83f6117fe98bc6426027a9b784fd737c">time</a>;</div> +<div class="line"><a name="l00994"></a><span class="lineno"> 994</span> };</div> +<div class="line"><a name="l00995"></a><span class="lineno"> 995</span> </div> +<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> NV_FLEX_API <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#ab1efb6764f65900cb09f0188ad6da08a">NvFlexGetDetailTimers</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#struct_nv_flex_detail_timer">NvFlexDetailTimer</a>** timers);</div> +<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> </div> +<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span> NV_FLEX_API <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* <a class="code" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, <span class="keywordtype">int</span> elementCount, <span class="keywordtype">int</span> elementByteStride, <a class="code" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3">NvFlexBufferType</a> type);</div> +<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> </div> +<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ab559759820a4322aff061745ef26c867">NvFlexFreeBuffer</a>(<a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* buf);</div> +<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> </div> +<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> NV_FLEX_API <span class="keywordtype">void</span>* <a class="code" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap</a>(<a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* buffer, <span class="keywordtype">int</span> flags);</div> +<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span> </div> +<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a054cb27646a389ea257d1bbde46a6e97">NvFlexUnmap</a>(<a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* buffer);</div> +<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> </div> +<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> NV_FLEX_API <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* <a class="code" href="_nv_flex_8h.html#aab83daf46e5a9428a0ad76fb75e8ec7e">NvFlexRegisterOGLBuffer</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, <span class="keywordtype">int</span> buf, <span class="keywordtype">int</span> elementCount, <span class="keywordtype">int</span> elementByteStride);</div> +<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span> </div> +<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a78045a8d4e856372df108dc616a94cd8">NvFlexUnregisterOGLBuffer</a>(<a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* buf);</div> +<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> </div> +<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span> NV_FLEX_API <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* <a class="code" href="_nv_flex_8h.html#ab487e68ce1c84ce1eec0c85b7daf5aa0">NvFlexRegisterD3DBuffer</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, <span class="keywordtype">void</span>* buffer, <span class="keywordtype">int</span> elementCount, <span class="keywordtype">int</span> elementByteStride);</div> +<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span> </div> +<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ad607e7916e5d76b384a61f1c1f94ab32">NvFlexUnregisterD3DBuffer</a>(<a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* buf);</div> +<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> </div> +<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a42ec7b30c79d4733e6a756b5d9b15ee6">NvFlexAcquireContext</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib);</div> +<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> </div> +<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ae6671f352bd77e296609d0bc2a57fd11">NvFlexRestoreContext</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib);</div> +<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span> </div> +<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span> NV_FLEX_API <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="_nv_flex_8h.html#a4c451971259524c6878b6b1ed4023ada">NvFlexGetDeviceName</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib);</div> +<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span> </div> +<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a2ac0a898a565a2cdf13b80acd4a3555c">NvFlexGetDeviceAndContext</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, <span class="keywordtype">void</span>** device, <span class="keywordtype">void</span>** context);</div> +<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  </div> +<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span> </div> +<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a898eb8e66a456dd2266c694f29cab600">NvFlexFlush</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib);</div> +<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span> </div> +<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span> </div> +<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> NV_FLEX_API <span class="keywordtype">void</span> NvFlexSetDebug(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <span class="keywordtype">bool</span> enable);</div> +<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> NV_FLEX_API <span class="keywordtype">void</span> NvFlexGetShapeBVH(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <span class="keywordtype">void</span>* bvh);</div> +<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span> NV_FLEX_API <span class="keywordtype">void</span> NvFlexCopySolver(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* dst, <a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* src);</div> +<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span> </div> +<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span> </div> +<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span> } <span class="comment">// extern "C"</span></div> +<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> </div> +<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> <span class="preprocessor">#endif // NV_FLEX_H</span></div> +<div class="ttc" id="_nv_flex_8h_html_a2345372dea2ad4f043153a84e7a2c407"><div class="ttname"><a href="_nv_flex_8h.html#a2345372dea2ad4f043153a84e7a2c407">NvFlexGetActiveCount</a></div><div class="ttdeci">NV_FLEX_API int NvFlexGetActiveCount(NvFlexSolver *solver)</div></div> +<div class="ttc" id="_nv_flex_8h_html_abdd60b0a83674283d09b4897fdd637a2"><div class="ttname"><a href="_nv_flex_8h.html#abdd60b0a83674283d09b4897fdd637a2">NvFlexTimers::solveShapes</a></div><div class="ttdeci">float solveShapes</div><div class="ttdoc">Time spent solving rigid body constraints. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:198</div></div> +<div class="ttc" id="_nv_flex_8h_html_ac5427457488ab3f2de91cf65335dda08"><div class="ttname"><a href="_nv_flex_8h.html#ac5427457488ab3f2de91cf65335dda08">NvFlexRegisterSolverCallback</a></div><div class="ttdeci">NV_FLEX_API NvFlexSolverCallback NvFlexRegisterSolverCallback(NvFlexSolver *solver, NvFlexSolverCallback function, NvFlexSolverCallbackStage stage)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a7a6e24c01235abc364ed12570ab15f84"><div class="ttname"><a href="_nv_flex_8h.html#a7a6e24c01235abc364ed12570ab15f84">NvFlexSphereGeometry::radius</a></div><div class="ttdeci">float radius</div><div class="ttdef"><b>Definition:</b> NvFlex.h:760</div></div> +<div class="ttc" id="_nv_flex_8h_html_ab4435b3857752360375fe52fc992cfcaa5538835c4767004ba5fd443ada08ea61"><div class="ttname"><a href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa5538835c4767004ba5fd443ada08ea61">eNvFlexLogWarning</a></div><div class="ttdoc">Warning messages. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:219</div></div> +<div class="ttc" id="_nv_flex_8h_html_a57e4d27b0aa8774e479fa66d65079f78"><div class="ttname"><a href="_nv_flex_8h.html#a57e4d27b0aa8774e479fa66d65079f78">NvFlexTimers::solveSprings</a></div><div class="ttdeci">float solveSprings</div><div class="ttdoc">Time spent solving distance constraints. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:199</div></div> +<div class="ttc" id="_nv_flex_8h_html_a6541b33eaca7b2323e73b30cea34d16c"><div class="ttname"><a href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16c">NvFlexMapFlags</a></div><div class="ttdeci">NvFlexMapFlags</div><div class="ttdef"><b>Definition:</b> NvFlex.h:67</div></div> +<div class="ttc" id="_nv_flex_8h_html_affb884bcf3e7e389812d0b52b0fc0490"><div class="ttname"><a href="_nv_flex_8h.html#affb884bcf3e7e389812d0b52b0fc0490">NvFlexGetRestParticles</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetRestParticles(NvFlexSolver *solver, NvFlexBuffer *p, int n)</div></div> +<div class="ttc" id="_nv_flex_8h_html_abe6f00c9b94debbf7c181082a14076d5"><div class="ttname"><a href="_nv_flex_8h.html#abe6f00c9b94debbf7c181082a14076d5">NvFlexErrorCallback</a></div><div class="ttdeci">void(* NvFlexErrorCallback)(NvFlexErrorSeverity type, const char *msg, const char *file, int line)</div><div class="ttdef"><b>Definition:</b> NvFlex.h:301</div></div> +<div class="ttc" id="_nv_flex_8h_html_ab4435b3857752360375fe52fc992cfcaa03d239332ae87f46270855dd06b6e58f"><div class="ttname"><a href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa03d239332ae87f46270855dd06b6e58f">eNvFlexLogInfo</a></div><div class="ttdoc">Information messages. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:218</div></div> +<div class="ttc" id="_nv_flex_8h_html_ac017e05107d0362d3d03a14eaadf0657"><div class="ttname"><a href="_nv_flex_8h.html#ac017e05107d0362d3d03a14eaadf0657">NvFlexParams::smoothing</a></div><div class="ttdeci">float smoothing</div><div class="ttdoc">Control the strength of Laplacian smoothing in particles for rendering, if zero then smoothed positio...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:134</div></div> +<div class="ttc" id="_nv_flex_8h_html_ae2db6ad8006027c1acf2315a0d15fe71"><div class="ttname"><a href="_nv_flex_8h.html#ae2db6ad8006027c1acf2315a0d15fe71">NvFlexSetParams</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetParams(NvFlexSolver *solver, const NvFlexParams *params)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a4f80c8bcfa6de99a52983adb13d80db9a260340ba9071892bd8795c3b29289806"><div class="ttname"><a href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a260340ba9071892bd8795c3b29289806">eNvFlexStageUpdateEnd</a></div><div class="ttdoc">Called at the end of solver update after the final substep has completed. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:233</div></div> +<div class="ttc" id="_nv_flex_8h_html_a89c872e761a53c87375f536a0ef597d8"><div class="ttname"><a href="_nv_flex_8h.html#a89c872e761a53c87375f536a0ef597d8">NvFlexSetRigids</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetRigids(NvFlexSolver *solver, NvFlexBuffer *offsets, NvFlexBuffer *indices, NvFlexBuffer *restPositions, NvFlexBuffer *restNormals, NvFlexBuffer *stiffness, NvFlexBuffer *rotations, NvFlexBuffer *translations, int numRigids, int numIndices)</div></div> +<div class="ttc" id="_nv_flex_8h_html_abfa62e01c4f4511d3f6a00ab6a0f257a"><div class="ttname"><a href="_nv_flex_8h.html#abfa62e01c4f4511d3f6a00ab6a0f257a">NvFlexGetSmoothParticles</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetSmoothParticles(NvFlexSolver *solver, NvFlexBuffer *p, int n)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a4958c555f0ed65dee54c37af32529356"><div class="ttname"><a href="_nv_flex_8h.html#a4958c555f0ed65dee54c37af32529356">NvFlexUpdateTriangleMesh</a></div><div class="ttdeci">NV_FLEX_API void NvFlexUpdateTriangleMesh(NvFlexLibrary *lib, NvFlexTriangleMeshId mesh, NvFlexBuffer *vertices, NvFlexBuffer *indices, int numVertices, int numTriangles, const float *lower, const float *upper)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a054cb27646a389ea257d1bbde46a6e97"><div class="ttname"><a href="_nv_flex_8h.html#a054cb27646a389ea257d1bbde46a6e97">NvFlexUnmap</a></div><div class="ttdeci">NV_FLEX_API void NvFlexUnmap(NvFlexBuffer *buffer)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a5ad2a7745fcb4d4afd5b5f1bda074644a453a23cc8e9d2e6097b5be187f3c6977"><div class="ttname"><a href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a453a23cc8e9d2e6097b5be187f3c6977">eNvFlexPhaseSelfCollide</a></div><div class="ttdoc">If set this particle will interact with particles of the same group. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:170</div></div> +<div class="ttc" id="_nv_flex_8h_html_aba34bc2bc8736e3a0cf18a7a6b56ff68"><div class="ttname"><a href="_nv_flex_8h.html#aba34bc2bc8736e3a0cf18a7a6b56ff68">NvFlexTimers::createCellIndices</a></div><div class="ttdeci">float createCellIndices</div><div class="ttdoc">Time spent creating grid indices. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:187</div></div> +<div class="ttc" id="_nv_flex_8h_html_a0e4cb2f91d3b7d122000d36a7d67ab81"><div class="ttname"><a href="_nv_flex_8h.html#a0e4cb2f91d3b7d122000d36a7d67ab81">NvFlexParams::shapeCollisionMargin</a></div><div class="ttdeci">float shapeCollisionMargin</div><div class="ttdoc">Increases the radius used during contact finding against kinematic shapes. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:154</div></div> +<div class="ttc" id="_nv_flex_8h_html_a0008a52f6ae1e17c436b095549bf1c78"><div class="ttname"><a href="_nv_flex_8h.html#a0008a52f6ae1e17c436b095549bf1c78">NvFlexSDFGeometry::scale</a></div><div class="ttdeci">float scale</div><div class="ttdoc">Uniform scale of SDF, this corresponds to the world space width of the shape. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:804</div></div> +<div class="ttc" id="_nv_flex_8h_html_aeed8fe87fa073067af1a45560cc54a79"><div class="ttname"><a href="_nv_flex_8h.html#aeed8fe87fa073067af1a45560cc54a79">NvFlexGetActive</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetActive(NvFlexSolver *solver, NvFlexBuffer *indices)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a7ade7491cd0693a6d7c5e88a99298378"><div class="ttname"><a href="_nv_flex_8h.html#a7ade7491cd0693a6d7c5e88a99298378">NvFlexParams::diffuseBallistic</a></div><div class="ttdeci">int diffuseBallistic</div><div class="ttdoc">The number of neighbors below which a diffuse particle is considered ballistic. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:143</div></div> +<div class="ttc" id="_nv_flex_8h_html_a46f5d35902f7da40628247175a174f3b"><div class="ttname"><a href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3b">NvFlexRelaxationMode</a></div><div class="ttdeci">NvFlexRelaxationMode</div><div class="ttdef"><b>Definition:</b> NvFlex.h:86</div></div> +<div class="ttc" id="_nv_flex_8h_html_a7043181449aebf540351d1d2f785cf4a"><div class="ttname"><a href="_nv_flex_8h.html#a7043181449aebf540351d1d2f785cf4a">NvFlexParams::drag</a></div><div class="ttdeci">float drag</div><div class="ttdoc">Drag force applied to particles belonging to dynamic triangles, proportional to velocity^2*area in th...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:122</div></div> +<div class="ttc" id="_nv_flex_8h_html_ab4435b3857752360375fe52fc992cfca"><div class="ttname"><a href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfca">NvFlexErrorSeverity</a></div><div class="ttdeci">NvFlexErrorSeverity</div><div class="ttdef"><b>Definition:</b> NvFlex.h:215</div></div> +<div class="ttc" id="_nv_flex_8h_html_ab003c023dde289dee075c49db022ccaf"><div class="ttname"><a href="_nv_flex_8h.html#ab003c023dde289dee075c49db022ccaf">NvFlexParams::maxSpeed</a></div><div class="ttdeci">float maxSpeed</div><div class="ttdoc">The magnitude of particle velocity will be clamped to this value at the end of each step...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:113</div></div> +<div class="ttc" id="_nv_flex_8h_html_ae54ff0cacfedd4333aa1a1f9b9291906"><div class="ttname"><a href="_nv_flex_8h.html#ae54ff0cacfedd4333aa1a1f9b9291906">NvFlexParams::planes</a></div><div class="ttdeci">float planes[8][4]</div><div class="ttdoc">Collision planes in the form ax + by + cz + d = 0. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:156</div></div> +<div class="ttc" id="_nv_flex_8h_html_a3ef4d1035530c3583bdf983c7e62b472"><div class="ttname"><a href="_nv_flex_8h.html#a3ef4d1035530c3583bdf983c7e62b472">NvFlexParams::cohesion</a></div><div class="ttdeci">float cohesion</div><div class="ttdoc">Control how strongly particles hold each other together, default: 0.025, range [0.0, +inf]. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:127</div></div> +<div class="ttc" id="_nv_flex_8h_html_af0a34fd0cdf686022650be9f895cbf2f"><div class="ttname"><a href="_nv_flex_8h.html#af0a34fd0cdf686022650be9f895cbf2f">NvFlexParams::staticFriction</a></div><div class="ttdeci">float staticFriction</div><div class="ttdoc">Coefficient of static friction used when colliding against shapes. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:107</div></div> +<div class="ttc" id="_nv_flex_8h_html_ac1f3c3a1eeeb57cf5b20d030a788e25c"><div class="ttname"><a href="_nv_flex_8h.html#ac1f3c3a1eeeb57cf5b20d030a788e25c">NvFlexTimers::collideParticles</a></div><div class="ttdeci">float collideParticles</div><div class="ttdoc">Time spent finding particle neighbors. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:191</div></div> +<div class="ttc" id="_nv_flex_8h_html_a8ad5aa3c9c9456607de9a2c9f1d0d2c1"><div class="ttname"><a href="_nv_flex_8h.html#a8ad5aa3c9c9456607de9a2c9f1d0d2c1">NvFlexCollisionGeometry::capsule</a></div><div class="ttdeci">NvFlexCapsuleGeometry capsule</div><div class="ttdef"><b>Definition:</b> NvFlex.h:815</div></div> +<div class="ttc" id="_nv_flex_8h_html_aaf8baa00e709ff8fd40d114f00bee0b6"><div class="ttname"><a href="_nv_flex_8h.html#aaf8baa00e709ff8fd40d114f00bee0b6">NvFlexTimers::predict</a></div><div class="ttdeci">float predict</div><div class="ttdoc">Time spent in prediction. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:186</div></div> +<div class="ttc" id="_nv_flex_8h_html_struct_nv_flex_convex_mesh_geometry"><div class="ttname"><a href="_nv_flex_8h.html#struct_nv_flex_convex_mesh_geometry">NvFlexConvexMeshGeometry</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:783</div></div> +<div class="ttc" id="_nv_flex_8h_html_a2ff723870a6eba26d9f3bb7e5250b27f"><div class="ttname"><a href="_nv_flex_8h.html#a2ff723870a6eba26d9f3bb7e5250b27f">NvFlexTimers::updateDiffuse</a></div><div class="ttdeci">float updateDiffuse</div><div class="ttdoc">Time spent updating diffuse particles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:204</div></div> +<div class="ttc" id="_nv_flex_8h_html_a0e3c0e02ec7addd25ebb3355a8865bfb"><div class="ttname"><a href="_nv_flex_8h.html#a0e3c0e02ec7addd25ebb3355a8865bfb">NvFlexCollisionGeometry::sphere</a></div><div class="ttdeci">NvFlexSphereGeometry sphere</div><div class="ttdef"><b>Definition:</b> NvFlex.h:814</div></div> +<div class="ttc" id="_nv_flex_8h_html_a55bf1f547086b8e469f2c3b20c9ae39d"><div class="ttname"><a href="_nv_flex_8h.html#a55bf1f547086b8e469f2c3b20c9ae39d">NvFlexParams::collisionDistance</a></div><div class="ttdeci">float collisionDistance</div><div class="ttdoc">Distance particles maintain against shapes, note that for robust collision against triangle meshes th...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:152</div></div> +<div class="ttc" id="_nv_flex_8h_html_a064e3ce30320610d495ba3faa72dc8d6"><div class="ttname"><a href="_nv_flex_8h.html#a064e3ce30320610d495ba3faa72dc8d6">NvFlexCollisionGeometry::triMesh</a></div><div class="ttdeci">NvFlexTriangleMeshGeometry triMesh</div><div class="ttdef"><b>Definition:</b> NvFlex.h:818</div></div> +<div class="ttc" id="_nv_flex_8h_html_a215e06106ec0cdbbcd405055a4535d1d"><div class="ttname"><a href="_nv_flex_8h.html#a215e06106ec0cdbbcd405055a4535d1d">NvFlexTimers::solveContacts</a></div><div class="ttdeci">float solveContacts</div><div class="ttdoc">Time spent solving contact constraints. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:200</div></div> +<div class="ttc" id="_nv_flex_8h_html_a31c31ea4f96cd4fdadc6b7317691304caa1c1225f6b8b2906c83748cfc46b81d9"><div class="ttname"><a href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304caa1c1225f6b8b2906c83748cfc46b81d9">eNvFlexShapeFlagReserved</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:838</div></div> +<div class="ttc" id="_nv_flex_8h_html_aeeeaf91dad0804d1dd3125e592a3260b"><div class="ttname"><a href="_nv_flex_8h.html#aeeeaf91dad0804d1dd3125e592a3260b">NvFlexInitDesc::computeType</a></div><div class="ttdeci">NvFlexComputeType computeType</div><div class="ttdoc">Set to eNvFlexD3D11 if DirectX 11 should be used, eNvFlexD3D12 for DirectX 12, this must match the li...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:284</div></div> +<div class="ttc" id="_nv_flex_8h_html_ab11bdd7f778d17af16cefea33265cb65"><div class="ttname"><a href="_nv_flex_8h.html#ab11bdd7f778d17af16cefea33265cb65">NvFlexDestroyDistanceField</a></div><div class="ttdeci">NV_FLEX_API void NvFlexDestroyDistanceField(NvFlexLibrary *lib, NvFlexDistanceFieldId sdf)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a9b2d3dc5ac42011aeec4e13be2e14252a297a93979a88fda6e6b551dcab5fb3df"><div class="ttname"><a href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a297a93979a88fda6e6b551dcab5fb3df">eNvFlexD3D11</a></div><div class="ttdoc">Use DirectX 11 compute for Flex, the application must link against the D3D libraries. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:242</div></div> +<div class="ttc" id="_nv_flex_8h_html_a1d755d7b090f7ed5c4c50d2d3fef1558"><div class="ttname"><a href="_nv_flex_8h.html#a1d755d7b090f7ed5c4c50d2d3fef1558">NvFlexDestroySolver</a></div><div class="ttdeci">NV_FLEX_API void NvFlexDestroySolver(NvFlexSolver *solver)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a31c31ea4f96cd4fdadc6b7317691304cae8a10737948abf6973f0f1d66bae7ef8"><div class="ttname"><a href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cae8a10737948abf6973f0f1d66bae7ef8">eNvFlexShapeFlagTypeMask</a></div><div class="ttdoc">Lower 3 bits holds the type of the collision shape. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:834</div></div> +<div class="ttc" id="_nv_flex_8h_html_abe564dbbbd4957542322b60d77a70e29"><div class="ttname"><a href="_nv_flex_8h.html#abe564dbbbd4957542322b60d77a70e29">NvFlexSolverCallbackParams::originalToSortedMap</a></div><div class="ttdeci">const int * originalToSortedMap</div><div class="ttdoc">Device pointer that maps the sorted callback data to the original position given by SetParticles() ...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:271</div></div> +<div class="ttc" id="_nv_flex_8h_html_aef1b5bceccca709ebb782d2ea8a61dc9"><div class="ttname"><a href="_nv_flex_8h.html#aef1b5bceccca709ebb782d2ea8a61dc9">NvFlexCapsuleGeometry::halfHeight</a></div><div class="ttdeci">float halfHeight</div><div class="ttdef"><b>Definition:</b> NvFlex.h:769</div></div> +<div class="ttc" id="_nv_flex_8h_html_a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6"><div class="ttname"><a href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">eNvFlexMapWait</a></div><div class="ttdoc">Calling thread will be blocked until buffer is ready for access, default. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:69</div></div> +<div class="ttc" id="_nv_flex_8h_html_a5a7213593dd9a23d9d67f8517d1da9de"><div class="ttname"><a href="_nv_flex_8h.html#a5a7213593dd9a23d9d67f8517d1da9de">NvFlexSetDiffuseParticles</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetDiffuseParticles(NvFlexSolver *solver, NvFlexBuffer *p, NvFlexBuffer *v, int n)</div></div> +<div class="ttc" id="_nv_flex_8h_html_afaeb57f4ee7e54b1ae1b912a465ed39e"><div class="ttname"><a href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a></div><div class="ttdeci">struct NvFlexSolver NvFlexSolver</div><div class="ttdef"><b>Definition:</b> NvFlex.h:57</div></div> +<div class="ttc" id="_nv_flex_8h_html_a4f80c8bcfa6de99a52983adb13d80db9a6f13e2ebdbf21f8c8ebcfe1ac9160586"><div class="ttname"><a href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a6f13e2ebdbf21f8c8ebcfe1ac9160586">eNvFlexStageSubstepEnd</a></div><div class="ttdoc">Called at the end of each substep after the velocity has been updated by the constraints. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:232</div></div> +<div class="ttc" id="_nv_flex_8h_html_a8ed42f9bd016cbcef45c96b5b32ca609"><div class="ttname"><a href="_nv_flex_8h.html#a8ed42f9bd016cbcef45c96b5b32ca609">NvFlexSolverCallbackParams::particles</a></div><div class="ttdeci">float * particles</div><div class="ttdoc">Device pointer to the active particle basic data in the form x,y,z,1/m. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:263</div></div> +<div class="ttc" id="_nv_flex_8h_html_a7f2b59fba77c60ce116e1eac57d63e50"><div class="ttname"><a href="_nv_flex_8h.html#a7f2b59fba77c60ce116e1eac57d63e50">NvFlexSetInflatables</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetInflatables(NvFlexSolver *solver, NvFlexBuffer *startTris, NvFlexBuffer *numTris, NvFlexBuffer *restVolumes, NvFlexBuffer *overPressures, NvFlexBuffer *constraintScales, int numInflatables)</div></div> +<div class="ttc" id="_nv_flex_8h_html_struct_nv_flex_sphere_geometry"><div class="ttname"><a href="_nv_flex_8h.html#struct_nv_flex_sphere_geometry">NvFlexSphereGeometry</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:758</div></div> +<div class="ttc" id="_nv_flex_8h_html_a4f80c8bcfa6de99a52983adb13d80db9a9f3914fdb03915a14ebe55a2c730e7ff"><div class="ttname"><a href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a9f3914fdb03915a14ebe55a2c730e7ff">eNvFlexStageIterationStart</a></div><div class="ttdoc">Called at the beginning of each constraint iteration. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:229</div></div> +<div class="ttc" id="_nv_flex_8h_html_a60794d849b4184335e2a0ddec0a9e6a2"><div class="ttname"><a href="_nv_flex_8h.html#a60794d849b4184335e2a0ddec0a9e6a2">NvFlexGetTriangleMeshBounds</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetTriangleMeshBounds(NvFlexLibrary *lib, const NvFlexTriangleMeshId mesh, float *lower, float *upper)</div></div> +<div class="ttc" id="_nv_flex_8h_html_struct_nv_flex_solver_callback_params"><div class="ttname"><a href="_nv_flex_8h.html#struct_nv_flex_solver_callback_params">NvFlexSolverCallbackParams</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:258</div></div> +<div class="ttc" id="_nv_flex_8h_html_afbaafe2b1006352002b03aabaca531cc"><div class="ttname"><a href="_nv_flex_8h.html#afbaafe2b1006352002b03aabaca531cc">NvFlexCreateConvexMesh</a></div><div class="ttdeci">NV_FLEX_API NvFlexConvexMeshId NvFlexCreateConvexMesh(NvFlexLibrary *lib)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a0898bb9210440b159688d4647f6eb083"><div class="ttname"><a href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap</a></div><div class="ttdeci">NV_FLEX_API void * NvFlexMap(NvFlexBuffer *buffer, int flags)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a83f6117fe98bc6426027a9b784fd737c"><div class="ttname"><a href="_nv_flex_8h.html#a83f6117fe98bc6426027a9b784fd737c">NvFlexDetailTimer::time</a></div><div class="ttdeci">float time</div><div class="ttdef"><b>Definition:</b> NvFlex.h:993</div></div> +<div class="ttc" id="_nv_flex_8h_html_union_nv_flex_collision_geometry"><div class="ttname"><a href="_nv_flex_8h.html#union_nv_flex_collision_geometry">NvFlexCollisionGeometry</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:812</div></div> +<div class="ttc" id="_nv_flex_8h_html_a1a1e69f26e02e8b3fca1d3636a7f3f13"><div class="ttname"><a href="_nv_flex_8h.html#a1a1e69f26e02e8b3fca1d3636a7f3f13">NvFlexTimers::updateNormals</a></div><div class="ttdeci">float updateNormals</div><div class="ttdoc">Time spent updating vertex normals. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:206</div></div> +<div class="ttc" id="_nv_flex_8h_html_a2aea4c3d772b4dbccb7dd9ba37c1bdc0"><div class="ttname"><a href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a></div><div class="ttdeci">unsigned int NvFlexTriangleMeshId</div><div class="ttdef"><b>Definition:</b> NvFlex.h:633</div></div> +<div class="ttc" id="_nv_flex_8h_html_a46f5d35902f7da40628247175a174f3ba858afe9529e908c2bc8ce92da8943b7c"><div class="ttname"><a href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba858afe9529e908c2bc8ce92da8943b7c">eNvFlexRelaxationLocal</a></div><div class="ttdoc">The relaxation factor is a fixed multiplier on each constraint's delta divided by the particle's cons...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:89</div></div> +<div class="ttc" id="_nv_flex_8h_html_ab487e68ce1c84ce1eec0c85b7daf5aa0"><div class="ttname"><a href="_nv_flex_8h.html#ab487e68ce1c84ce1eec0c85b7daf5aa0">NvFlexRegisterD3DBuffer</a></div><div class="ttdeci">NV_FLEX_API NvFlexBuffer * NvFlexRegisterD3DBuffer(NvFlexLibrary *lib, void *buffer, int elementCount, int elementByteStride)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a6541b33eaca7b2323e73b30cea34d16caa01c2dce3aa1e0d9d151060e1786c706"><div class="ttname"><a href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16caa01c2dce3aa1e0d9d151060e1786c706">eNvFlexMapDiscard</a></div><div class="ttdoc">Buffer contents will be discarded, this allows for efficent buffer reuse. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:71</div></div> +<div class="ttc" id="_nv_flex_8h_html_a31c31ea4f96cd4fdadc6b7317691304ca409215fa9b917f2d0830a66bd11b3ff8"><div class="ttname"><a href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304ca409215fa9b917f2d0830a66bd11b3ff8">eNvFlexShapeFlagTrigger</a></div><div class="ttdoc">Indicates that the shape is a trigger volume, this means it will not perform any collision response...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:836</div></div> +<div class="ttc" id="_nv_flex_8h_html_a0506ae712f846087b8647ea389ac26baae22144512ae098865c6725af16a68ad3"><div class="ttname"><a href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baae22144512ae098865c6725af16a68ad3">eNvFlexShapeSphere</a></div><div class="ttdoc">A sphere shape, see FlexSphereGeometry. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:824</div></div> +<div class="ttc" id="_nv_flex_8h_html_a0506ae712f846087b8647ea389ac26baa1fd78f8694b954f8d12fe7d911f17180"><div class="ttname"><a href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1fd78f8694b954f8d12fe7d911f17180">eNvFlexShapeSDF</a></div><div class="ttdoc">A signed distance field shape, see FlexSDFGeometry. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:829</div></div> +<div class="ttc" id="_nv_flex_8h_html_a5890b9e46d626cfa19994976ea53c52e"><div class="ttname"><a href="_nv_flex_8h.html#a5890b9e46d626cfa19994976ea53c52e">NvFlexInitDesc::deviceIndex</a></div><div class="ttdeci">int deviceIndex</div><div class="ttdoc">The GPU device index that should be used, if there is already a CUDA context on the calling thread th...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:279</div></div> +<div class="ttc" id="_nv_flex_8h_html_a8f0ee62a14387dd5b5a4e8c6bc429140"><div class="ttname"><a href="_nv_flex_8h.html#a8f0ee62a14387dd5b5a4e8c6bc429140">NvFlexParams::fluid</a></div><div class="ttdeci">bool fluid</div><div class="ttdoc">If true then particles with phase 0 are considered fluid particles and interact using the position ba...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:126</div></div> +<div class="ttc" id="_nv_flex_8h_html_a40f452b4edbf11b793f31286a0ae270e"><div class="ttname"><a href="_nv_flex_8h.html#a40f452b4edbf11b793f31286a0ae270e">NvFlexParams::viscosity</a></div><div class="ttdeci">float viscosity</div><div class="ttdoc">Smoothes particle velocities using XSPH viscosity. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:129</div></div> +<div class="ttc" id="_nv_flex_8h_html_af6a50e64591866ae2390a57e3342566c"><div class="ttname"><a href="_nv_flex_8h.html#af6a50e64591866ae2390a57e3342566c">NvFlexTriangleMeshGeometry::mesh</a></div><div class="ttdeci">NvFlexTriangleMeshId mesh</div><div class="ttdoc">A triangle mesh pointer created by NvFlexCreateTriangleMesh() </div><div class="ttdef"><b>Definition:</b> NvFlex.h:795</div></div> +<div class="ttc" id="_nv_flex_8h_html_a67bd9669086e823ebe33d08d14f5b2b9"><div class="ttname"><a href="_nv_flex_8h.html#a67bd9669086e823ebe33d08d14f5b2b9">NvFlexGetVelocities</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetVelocities(NvFlexSolver *solver, NvFlexBuffer *v, int n)</div></div> +<div class="ttc" id="_nv_flex_8h_html_af53fa9d7caef50db346475065504848d"><div class="ttname"><a href="_nv_flex_8h.html#af53fa9d7caef50db346475065504848d">NvFlexMakePhase</a></div><div class="ttdeci">NV_FLEX_API int NvFlexMakePhase(int group, int flags)</div><div class="ttdef"><b>Definition:</b> NvFlex.h:178</div></div> +<div class="ttc" id="_nv_flex_8h_html_a8114a049f5e16f7d1b960f3ac4993fdb"><div class="ttname"><a href="_nv_flex_8h.html#a8114a049f5e16f7d1b960f3ac4993fdb">NvFlexParams::adhesion</a></div><div class="ttdeci">float adhesion</div><div class="ttdoc">Controls how strongly particles stick to surfaces they hit, default 0.0, range [0.0, +inf]. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:110</div></div> +<div class="ttc" id="_nv_flex_8h_html_a78045a8d4e856372df108dc616a94cd8"><div class="ttname"><a href="_nv_flex_8h.html#a78045a8d4e856372df108dc616a94cd8">NvFlexUnregisterOGLBuffer</a></div><div class="ttdeci">NV_FLEX_API void NvFlexUnregisterOGLBuffer(NvFlexBuffer *buf)</div></div> +<div class="ttc" id="_nv_flex_8h_html_ab669c404607156367b09878870dbe30c"><div class="ttname"><a href="_nv_flex_8h.html#ab669c404607156367b09878870dbe30c">NvFlexBoxGeometry::halfExtents</a></div><div class="ttdeci">float halfExtents[3]</div><div class="ttdef"><b>Definition:</b> NvFlex.h:777</div></div> +<div class="ttc" id="_nv_flex_8h_html_struct_nv_flex_box_geometry"><div class="ttname"><a href="_nv_flex_8h.html#struct_nv_flex_box_geometry">NvFlexBoxGeometry</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:775</div></div> +<div class="ttc" id="_nv_flex_8h_html_a15b7a5449bee38bbe5dcaf23690f09f5"><div class="ttname"><a href="_nv_flex_8h.html#a15b7a5449bee38bbe5dcaf23690f09f5">NvFlexGetPhases</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetPhases(NvFlexSolver *solver, NvFlexBuffer *phases, int n)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a5c28caf6d5d513c5adacd4fbc782f308"><div class="ttname"><a href="_nv_flex_8h.html#a5c28caf6d5d513c5adacd4fbc782f308">NvFlexCreateDistanceField</a></div><div class="ttdeci">NV_FLEX_API NvFlexDistanceFieldId NvFlexCreateDistanceField(NvFlexLibrary *lib)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a9e5f943053d43d7e1a6b149babe4fe44"><div class="ttname"><a href="_nv_flex_8h.html#a9e5f943053d43d7e1a6b149babe4fe44">NvFlexSolverCallbackParams::phases</a></div><div class="ttdeci">int * phases</div><div class="ttdoc">Device pointer to the active particle phase data. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:265</div></div> +<div class="ttc" id="_nv_flex_8h_html_a898eb8e66a456dd2266c694f29cab600"><div class="ttname"><a href="_nv_flex_8h.html#a898eb8e66a456dd2266c694f29cab600">NvFlexFlush</a></div><div class="ttdeci">NV_FLEX_API void NvFlexFlush(NvFlexLibrary *lib)</div></div> +<div class="ttc" id="_nv_flex_8h_html_ab1eec84a21b1872fba11c9b4cc1d1629"><div class="ttname"><a href="_nv_flex_8h.html#ab1eec84a21b1872fba11c9b4cc1d1629">NvFlexGetBounds</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetBounds(NvFlexSolver *solver, NvFlexBuffer *lower, NvFlexBuffer *upper)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8"><div class="ttname"><a href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8">eNvFlexBufferHost</a></div><div class="ttdoc">Host mappable buffer, pinned memory on CUDA, staging buffer on DX. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:79</div></div> +<div class="ttc" id="_nv_flex_8h_html_ac32019f7dd1f30ab8a7391a417ed02c9"><div class="ttname"><a href="_nv_flex_8h.html#ac32019f7dd1f30ab8a7391a417ed02c9">NvFlexSolverCallbackParams::numActive</a></div><div class="ttdeci">int numActive</div><div class="ttdoc">The number of active particles returned, the callback data only return pointers to active particle da...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:267</div></div> +<div class="ttc" id="_nv_flex_8h_html_ae0d57e4fc2b3b51ec08f7da0a28ff343"><div class="ttname"><a href="_nv_flex_8h.html#ae0d57e4fc2b3b51ec08f7da0a28ff343">NvFlexGetSolverLibrary</a></div><div class="ttdeci">NV_FLEX_API NvFlexLibrary * NvFlexGetSolverLibrary(NvFlexSolver *solver)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a50a3933d3f7b77d0500c702b1fa9ba9a"><div class="ttname"><a href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a></div><div class="ttdeci">struct NvFlexBuffer NvFlexBuffer</div><div class="ttdef"><b>Definition:</b> NvFlex.h:62</div></div> +<div class="ttc" id="_nv_flex_8h_html_ae45cb18deec2db8ff44d181e80f24695"><div class="ttname"><a href="_nv_flex_8h.html#ae45cb18deec2db8ff44d181e80f24695">NvFlexTimers::sortCellIndices</a></div><div class="ttdeci">float sortCellIndices</div><div class="ttdoc">Time spent sorting grid indices. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:188</div></div> +<div class="ttc" id="_nv_flex_8h_html_aa6eddaa3a6eb35917c093dcabf69a200"><div class="ttname"><a href="_nv_flex_8h.html#aa6eddaa3a6eb35917c093dcabf69a200">NvFlexParams::radius</a></div><div class="ttdeci">float radius</div><div class="ttdoc">The maximum interaction radius for particles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:101</div></div> +<div class="ttc" id="_nv_flex_8h_html_a7edac9cf450917147b83e98f5cb09f5d"><div class="ttname"><a href="_nv_flex_8h.html#a7edac9cf450917147b83e98f5cb09f5d">NvFlexGetContacts</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetContacts(NvFlexSolver *solver, NvFlexBuffer *planes, NvFlexBuffer *velocities, NvFlexBuffer *indices, NvFlexBuffer *counts)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a53e827707abaf2e03b78c3c88469d7bf"><div class="ttname"><a href="_nv_flex_8h.html#a53e827707abaf2e03b78c3c88469d7bf">NvFlexCollisionGeometry::box</a></div><div class="ttdeci">NvFlexBoxGeometry box</div><div class="ttdef"><b>Definition:</b> NvFlex.h:816</div></div> +<div class="ttc" id="_nv_flex_8h_html_ac48a490fa3d62cc678c309dd4b8cbf18"><div class="ttname"><a href="_nv_flex_8h.html#ac48a490fa3d62cc678c309dd4b8cbf18">NvFlexSolverCallbackParams::velocities</a></div><div class="ttdeci">float * velocities</div><div class="ttdoc">Device pointer to the active particle velocity data in the form x,y,z,w (last component is not used) ...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:264</div></div> +<div class="ttc" id="_nv_flex_8h_html_ab136ae1511a39ef570c010f321eff206"><div class="ttname"><a href="_nv_flex_8h.html#ab136ae1511a39ef570c010f321eff206">NvFlexParams::anisotropyMin</a></div><div class="ttdeci">float anisotropyMin</div><div class="ttdoc">Clamp the anisotropy scale to this fraction of the radius. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:132</div></div> +<div class="ttc" id="_nv_flex_8h_html_afc5d58e7f591213c3fe1c31b4d440eb6"><div class="ttname"><a href="_nv_flex_8h.html#afc5d58e7f591213c3fe1c31b4d440eb6">NvFlexTimers::applyDeltas</a></div><div class="ttdeci">float applyDeltas</div><div class="ttdoc">Time spent adding position deltas to particles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:202</div></div> +<div class="ttc" id="_nv_flex_8h_html_a0a6936f3cb0544ad624f1dea6b7eb50c"><div class="ttname"><a href="_nv_flex_8h.html#a0a6936f3cb0544ad624f1dea6b7eb50c">NvFlexSDFGeometry::field</a></div><div class="ttdeci">NvFlexDistanceFieldId field</div><div class="ttdoc">A signed distance field pointer created by NvFlexCreateDistanceField() </div><div class="ttdef"><b>Definition:</b> NvFlex.h:805</div></div> +<div class="ttc" id="_nv_flex_8h_html_a49f7117a457a716e7790904209f68707"><div class="ttname"><a href="_nv_flex_8h.html#a49f7117a457a716e7790904209f68707">NvFlexTimers::calculateDensity</a></div><div class="ttdeci">float calculateDensity</div><div class="ttdoc">Time spent calculating fluid density. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:195</div></div> +<div class="ttc" id="struct_nv_flex_solver_callback_html_a2878301f697313b3ef3ad1bc2410c915"><div class="ttname"><a href="struct_nv_flex_solver_callback.html#a2878301f697313b3ef3ad1bc2410c915">NvFlexSolverCallback::userData</a></div><div class="ttdeci">void * userData</div><div class="ttdef"><b>Definition:</b> NvFlex.h:292</div></div> +<div class="ttc" id="_nv_flex_8h_html_a0506ae712f846087b8647ea389ac26baa1724c140b583fbf2c11c14a24dd3764a"><div class="ttname"><a href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1724c140b583fbf2c11c14a24dd3764a">eNvFlexShapeCapsule</a></div><div class="ttdoc">A capsule shape, see FlexCapsuleGeometry. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:825</div></div> +<div class="ttc" id="_nv_flex_8h_html_afdda5a5210938a1e8a7c3a8218ad468e"><div class="ttname"><a href="_nv_flex_8h.html#afdda5a5210938a1e8a7c3a8218ad468e">NvFlexCreateTriangleMesh</a></div><div class="ttdeci">NV_FLEX_API NvFlexTriangleMeshId NvFlexCreateTriangleMesh(NvFlexLibrary *lib)</div></div> +<div class="ttc" id="_nv_flex_8h_html_aa457096286567a37d4f1d5f4857d9296"><div class="ttname"><a href="_nv_flex_8h.html#aa457096286567a37d4f1d5f4857d9296">NvFlexSetRestParticles</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetRestParticles(NvFlexSolver *solver, NvFlexBuffer *p, int n)</div></div> +<div class="ttc" id="_nv_flex_8h_html_aaf59e45ada57c7f958a8030099cbe211"><div class="ttname"><a href="_nv_flex_8h.html#aaf59e45ada57c7f958a8030099cbe211">NvFlexShutdown</a></div><div class="ttdeci">NV_FLEX_API void NvFlexShutdown(NvFlexLibrary *lib)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a3974e1e608d9f532d5520dc158b47903"><div class="ttname"><a href="_nv_flex_8h.html#a3974e1e608d9f532d5520dc158b47903">NvFlexSolverCallbackParams::solver</a></div><div class="ttdeci">NvFlexSolver * solver</div><div class="ttdoc">Pointer to the solver that the callback is registered to. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:260</div></div> +<div class="ttc" id="_nv_flex_8h_html_a5ad2a7745fcb4d4afd5b5f1bda074644a1728772beb1746ace4c549b2ed8f1d74"><div class="ttname"><a href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a1728772beb1746ace4c549b2ed8f1d74">eNvFlexPhaseFluid</a></div><div class="ttdoc">If set this particle will generate fluid density constraints for its overlapping neighbors. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:172</div></div> +<div class="ttc" id="_nv_flex_8h_html_a5ad2a7745fcb4d4afd5b5f1bda074644"><div class="ttname"><a href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644">NvFlexPhase</a></div><div class="ttdeci">NvFlexPhase</div><div class="ttdef"><b>Definition:</b> NvFlex.h:166</div></div> +<div class="ttc" id="_nv_flex_8h_html_ad607e7916e5d76b384a61f1c1f94ab32"><div class="ttname"><a href="_nv_flex_8h.html#ad607e7916e5d76b384a61f1c1f94ab32">NvFlexUnregisterD3DBuffer</a></div><div class="ttdeci">NV_FLEX_API void NvFlexUnregisterD3DBuffer(NvFlexBuffer *buf)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a533a78227b462a268c905f9c307c4bd6"><div class="ttname"><a href="_nv_flex_8h.html#a533a78227b462a268c905f9c307c4bd6">NvFlexParams::sleepThreshold</a></div><div class="ttdeci">float sleepThreshold</div><div class="ttdoc">Particles with a velocity magnitude < this threshold will be considered fixed. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:111</div></div> +<div class="ttc" id="_nv_flex_8h_html_a6f6f14e625dc744a127be81e6dc4cb74"><div class="ttname"><a href="_nv_flex_8h.html#a6f6f14e625dc744a127be81e6dc4cb74">NvFlexGetDensities</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetDensities(NvFlexSolver *solver, NvFlexBuffer *densities, int n)</div></div> +<div class="ttc" id="_nv_flex_8h_html_ac25ec5de38c177db51198bb620644d36"><div class="ttname"><a href="_nv_flex_8h.html#ac25ec5de38c177db51198bb620644d36">NvFlexGetVersion</a></div><div class="ttdeci">NV_FLEX_API int NvFlexGetVersion()</div></div> +<div class="ttc" id="_nv_flex_8h_html_a5e37444b8c96e0880a428d9ea58dbf54"><div class="ttname"><a href="_nv_flex_8h.html#a5e37444b8c96e0880a428d9ea58dbf54">NvFlexParams::anisotropyMax</a></div><div class="ttdeci">float anisotropyMax</div><div class="ttdoc">Clamp the anisotropy scale to this fraction of the radius. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:133</div></div> +<div class="ttc" id="_nv_flex_8h_html_afc20d27121f49b61be9cc6bd4c25f547"><div class="ttname"><a href="_nv_flex_8h.html#afc20d27121f49b61be9cc6bd4c25f547">NvFlexTimers::collideTriangles</a></div><div class="ttdeci">float collideTriangles</div><div class="ttdoc">Time spent colliding triangle shapes. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:193</div></div> +<div class="ttc" id="_nv_flex_8h_html_ab1efb6764f65900cb09f0188ad6da08a"><div class="ttname"><a href="_nv_flex_8h.html#ab1efb6764f65900cb09f0188ad6da08a">NvFlexGetDetailTimers</a></div><div class="ttdeci">NV_FLEX_API int NvFlexGetDetailTimers(NvFlexSolver *solver, NvFlexDetailTimer **timers)</div></div> +<div class="ttc" id="_nv_flex_8h_html_afe09e63d22c5156fe24cd2d2bc069c04"><div class="ttname"><a href="_nv_flex_8h.html#afe09e63d22c5156fe24cd2d2bc069c04">NvFlexSetVelocities</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetVelocities(NvFlexSolver *solver, NvFlexBuffer *v, int n)</div></div> +<div class="ttc" id="_nv_flex_8h_html_ad56e661161763579afb375b3841eb5ff"><div class="ttname"><a href="_nv_flex_8h.html#ad56e661161763579afb375b3841eb5ff">NvFlexGetConvexMeshBounds</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetConvexMeshBounds(NvFlexLibrary *lib, NvFlexConvexMeshId mesh, float *lower, float *upper)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a31c31ea4f96cd4fdadc6b7317691304cadc6740cf6d829fba159d92e43ffb5992"><div class="ttname"><a href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cadc6740cf6d829fba159d92e43ffb5992">eNvFlexShapeFlagDynamic</a></div><div class="ttdoc">Indicates the shape is dynamic and should have lower priority over static collision shapes...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:835</div></div> +<div class="ttc" id="_nv_flex_8h_html_a6541b33eaca7b2323e73b30cea34d16ca1bd450ab65ccc06288fae95e23d5e6f1"><div class="ttname"><a href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca1bd450ab65ccc06288fae95e23d5e6f1">eNvFlexMapDoNotWait</a></div><div class="ttdoc">Calling thread will check if buffer is ready for access, if not ready then the method will return NUL...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:70</div></div> +<div class="ttc" id="_nv_flex_8h_html_aadb2a0cf125e4a6b2f3443ab7dcbd3d4"><div class="ttname"><a href="_nv_flex_8h.html#aadb2a0cf125e4a6b2f3443ab7dcbd3d4">NvFlexGetNormals</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetNormals(NvFlexSolver *solver, NvFlexBuffer *normals, int n)</div></div> +<div class="ttc" id="_nv_flex_8h_html_ab98a2aba477ab4d4178bf677852bf544"><div class="ttname"><a href="_nv_flex_8h.html#ab98a2aba477ab4d4178bf677852bf544">NvFlexParams::shockPropagation</a></div><div class="ttdeci">float shockPropagation</div><div class="ttdoc">Artificially decrease the mass of particles based on height from a fixed reference point...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:116</div></div> +<div class="ttc" id="_nv_flex_8h_html_a4c451971259524c6878b6b1ed4023ada"><div class="ttname"><a href="_nv_flex_8h.html#a4c451971259524c6878b6b1ed4023ada">NvFlexGetDeviceName</a></div><div class="ttdeci">NV_FLEX_API const char * NvFlexGetDeviceName(NvFlexLibrary *lib)</div></div> +<div class="ttc" id="_nv_flex_8h_html_ac85b6372e5c7bfc508ecb7b8c59c72a0"><div class="ttname"><a href="_nv_flex_8h.html#ac85b6372e5c7bfc508ecb7b8c59c72a0">NvFlexDestroyConvexMesh</a></div><div class="ttdeci">NV_FLEX_API void NvFlexDestroyConvexMesh(NvFlexLibrary *lib, NvFlexConvexMeshId convex)</div></div> +<div class="ttc" id="_nv_flex_8h_html_aaa36ba5ee44e34e762167fb0b8b3292e"><div class="ttname"><a href="_nv_flex_8h.html#aaa36ba5ee44e34e762167fb0b8b3292e">NvFlexTimers::collideFields</a></div><div class="ttdeci">float collideFields</div><div class="ttdoc">Time spent colliding signed distance field shapes. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:194</div></div> +<div class="ttc" id="_nv_flex_8h_html_af9b72d2909ef335b12a46cdbd4b71f57"><div class="ttname"><a href="_nv_flex_8h.html#af9b72d2909ef335b12a46cdbd4b71f57">NvFlexTimers::calculateAnisotropy</a></div><div class="ttdeci">float calculateAnisotropy</div><div class="ttdoc">Time spent calculating particle anisotropy for fluid. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:203</div></div> +<div class="ttc" id="_nv_flex_8h_html_abf304d5c1f8f041fa46a2bfb0bdf56fe"><div class="ttname"><a href="_nv_flex_8h.html#abf304d5c1f8f041fa46a2bfb0bdf56fe">NvFlexInitDesc::renderContext</a></div><div class="ttdeci">void * renderContext</div><div class="ttdoc">Direct3D context to use for simulation, if none is specified a new context will be created...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:282</div></div> +<div class="ttc" id="_nv_flex_8h_html_a3078976e98f370a9fbdb11db80f1f318"><div class="ttname"><a href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a></div><div class="ttdeci">struct NvFlexLibrary NvFlexLibrary</div><div class="ttdef"><b>Definition:</b> NvFlex.h:52</div></div> +<div class="ttc" id="_nv_flex_8h_html_a42ec7b30c79d4733e6a756b5d9b15ee6"><div class="ttname"><a href="_nv_flex_8h.html#a42ec7b30c79d4733e6a756b5d9b15ee6">NvFlexAcquireContext</a></div><div class="ttdeci">NV_FLEX_API void NvFlexAcquireContext(NvFlexLibrary *lib)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a687e5ec141948f779faa9183b68cb743"><div class="ttname"><a href="_nv_flex_8h.html#a687e5ec141948f779faa9183b68cb743">NvFlexInit</a></div><div class="ttdeci">NV_FLEX_API NvFlexLibrary * NvFlexInit(int version=NV_FLEX_VERSION, NvFlexErrorCallback errorFunc=0, NvFlexInitDesc *desc=0)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a05f92015449662f5a2f5d5e9ecdc2c6e"><div class="ttname"><a href="_nv_flex_8h.html#a05f92015449662f5a2f5d5e9ecdc2c6e">NvFlexParams::freeSurfaceDrag</a></div><div class="ttdeci">float freeSurfaceDrag</div><div class="ttdoc">Drag force applied to boundary fluid particles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:136</div></div> +<div class="ttc" id="_nv_flex_8h_html_a221a4621ab98eca6ecd3368d288154a4"><div class="ttname"><a href="_nv_flex_8h.html#a221a4621ab98eca6ecd3368d288154a4">NvFlexGetDeviceLatency</a></div><div class="ttdeci">NV_FLEX_API float NvFlexGetDeviceLatency(NvFlexSolver *solver)</div></div> +<div class="ttc" id="_nv_flex_8h_html_ac0049037dcff7a769030acd567eac6cd"><div class="ttname"><a href="_nv_flex_8h.html#ac0049037dcff7a769030acd567eac6cd">NvFlexCollisionGeometry::sdf</a></div><div class="ttdeci">NvFlexSDFGeometry sdf</div><div class="ttdef"><b>Definition:</b> NvFlex.h:819</div></div> +<div class="ttc" id="_nv_flex_8h_html_a0def9c3ceff57bbae5bcec15f6d64b36"><div class="ttname"><a href="_nv_flex_8h.html#a0def9c3ceff57bbae5bcec15f6d64b36">NvFlexParams::maxAcceleration</a></div><div class="ttdeci">float maxAcceleration</div><div class="ttdoc">The magnitude of particle acceleration will be clamped to this value at the end of each step (limits ...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:114</div></div> +<div class="ttc" id="_nv_flex_8h_html_aafb92c4fa45ce9614cdfd349b3722c8a"><div class="ttname"><a href="_nv_flex_8h.html#aafb92c4fa45ce9614cdfd349b3722c8a">NvFlexParams::wind</a></div><div class="ttdeci">float wind[3]</div><div class="ttdoc">Constant acceleration applied to particles that belong to dynamic triangles, drag needs to be > 0 for...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:121</div></div> +<div class="ttc" id="_nv_flex_8h_html_a584ffb275b9986fd5444ed1a7ea247d9"><div class="ttname"><a href="_nv_flex_8h.html#a584ffb275b9986fd5444ed1a7ea247d9">NvFlexUpdateDistanceField</a></div><div class="ttdeci">NV_FLEX_API void NvFlexUpdateDistanceField(NvFlexLibrary *lib, NvFlexDistanceFieldId sdf, int dimx, int dimy, int dimz, NvFlexBuffer *field)</div></div> +<div class="ttc" id="_nv_flex_8h_html_struct_nv_flex_timers"><div class="ttname"><a href="_nv_flex_8h.html#struct_nv_flex_timers">NvFlexTimers</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:184</div></div> +<div class="ttc" id="_nv_flex_8h_html_a5628f890f4ae070e405feaf1f81a7b85"><div class="ttname"><a href="_nv_flex_8h.html#a5628f890f4ae070e405feaf1f81a7b85">NvFlexParams::surfaceTension</a></div><div class="ttdeci">float surfaceTension</div><div class="ttdoc">Controls how strongly particles attempt to minimize surface area, default: 0.0, range: [0...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:128</div></div> +<div class="ttc" id="_nv_flex_8h_html_a843360ebf23cd00e5eff72d19e796dd9"><div class="ttname"><a href="_nv_flex_8h.html#a843360ebf23cd00e5eff72d19e796dd9">NvFlexSolverCallbackParams::dt</a></div><div class="ttdeci">float dt</div><div class="ttdoc">The per-update time-step, this is the value passed to NvFlexUpdateSolver() </div><div class="ttdef"><b>Definition:</b> NvFlex.h:269</div></div> +<div class="ttc" id="_nv_flex_8h_html_a7bed2ff24c30c76aed0923809fc16d8c"><div class="ttname"><a href="_nv_flex_8h.html#a7bed2ff24c30c76aed0923809fc16d8c">NvFlexParams::diffuseSortAxis</a></div><div class="ttdeci">float diffuseSortAxis[3]</div><div class="ttdoc">Diffuse particles will be sorted by depth along this axis if non-zero. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:144</div></div> +<div class="ttc" id="_nv_flex_8h_html_ad019ad1901bc33d43e3a60df0dfe9b09"><div class="ttname"><a href="_nv_flex_8h.html#ad019ad1901bc33d43e3a60df0dfe9b09">NvFlexParams::fluidRestDistance</a></div><div class="ttdeci">float fluidRestDistance</div><div class="ttdoc">The distance fluid particles are spaced at the rest density, must be in the range (0...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:103</div></div> +<div class="ttc" id="_nv_flex_8h_html_a6071050991cf71a8d9ff28ea968479af"><div class="ttname"><a href="_nv_flex_8h.html#a6071050991cf71a8d9ff28ea968479af">NvFlexTimers::reorder</a></div><div class="ttdeci">float reorder</div><div class="ttdoc">Time spent reordering particles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:190</div></div> +<div class="ttc" id="_nv_flex_8h_html_a56e990c5bfbc89677988cbf2471c0ade"><div class="ttname"><a href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlexDistanceFieldId</a></div><div class="ttdeci">unsigned int NvFlexDistanceFieldId</div><div class="ttdef"><b>Definition:</b> NvFlex.h:638</div></div> +<div class="ttc" id="_nv_flex_8h_html_a0506ae712f846087b8647ea389ac26baa315488da382a5e9794c83358385f7ae1"><div class="ttname"><a href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa315488da382a5e9794c83358385f7ae1">eNvFlexShapeTriangleMesh</a></div><div class="ttdoc">A triangle mesh shape, see FlexTriangleMeshGeometry. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:828</div></div> +<div class="ttc" id="_nv_flex_8h_html_a5ad2a7745fcb4d4afd5b5f1bda074644a76a62d3a5df428f18e01f8b37573a7b1"><div class="ttname"><a href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a76a62d3a5df428f18e01f8b37573a7b1">eNvFlexPhaseSelfCollideFilter</a></div><div class="ttdoc">If set this particle will ignore collisions with particles closer than the radius in the rest pose...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:171</div></div> +<div class="ttc" id="_nv_flex_8h_html_ae28167c680ad56dcff600ce0a223cec5"><div class="ttname"><a href="_nv_flex_8h.html#ae28167c680ad56dcff600ce0a223cec5">NvFlexGetAnisotropy</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetAnisotropy(NvFlexSolver *solver, NvFlexBuffer *q1, NvFlexBuffer *q2, NvFlexBuffer *q3)</div></div> +<div class="ttc" id="_nv_flex_8h_html_ab16b6d2e11e0ab417ee6c4cf16f0a27d"><div class="ttname"><a href="_nv_flex_8h.html#ab16b6d2e11e0ab417ee6c4cf16f0a27d">NvFlexGetTimers</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetTimers(NvFlexSolver *solver, NvFlexTimers *timers)</div></div> +<div class="ttc" id="_nv_flex_8h_html_abdc984644770fec15d7af740c9730186"><div class="ttname"><a href="_nv_flex_8h.html#abdc984644770fec15d7af740c9730186">NvFlexConvexMeshGeometry::mesh</a></div><div class="ttdeci">NvFlexConvexMeshId mesh</div><div class="ttdef"><b>Definition:</b> NvFlex.h:786</div></div> +<div class="ttc" id="_nv_flex_8h_html_ae701fdcc0e7bf26c1dfc54d400ffb3d2"><div class="ttname"><a href="_nv_flex_8h.html#ae701fdcc0e7bf26c1dfc54d400ffb3d2">NvFlexCollisionGeometry::convexMesh</a></div><div class="ttdeci">NvFlexConvexMeshGeometry convexMesh</div><div class="ttdef"><b>Definition:</b> NvFlex.h:817</div></div> +<div class="ttc" id="_nv_flex_8h_html_a4f80c8bcfa6de99a52983adb13d80db9"><div class="ttname"><a href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9">NvFlexSolverCallbackStage</a></div><div class="ttdeci">NvFlexSolverCallbackStage</div><div class="ttdef"><b>Definition:</b> NvFlex.h:227</div></div> +<div class="ttc" id="_nv_flex_8h_html_aeff62427426510eeb1cf5625e14ff585"><div class="ttname"><a href="_nv_flex_8h.html#aeff62427426510eeb1cf5625e14ff585">NvFlexParams::dissipation</a></div><div class="ttdeci">float dissipation</div><div class="ttdoc">Damps particle velocity based on how many particle contacts it has. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:117</div></div> +<div class="ttc" id="_nv_flex_8h_html_a0506ae712f846087b8647ea389ac26ba"><div class="ttname"><a href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26ba">NvFlexCollisionShapeType</a></div><div class="ttdeci">NvFlexCollisionShapeType</div><div class="ttdef"><b>Definition:</b> NvFlex.h:822</div></div> +<div class="ttc" id="_nv_flex_8h_html_ab4435b3857752360375fe52fc992cfcaa77b51759e33d60b2caf327bb4835351e"><div class="ttname"><a href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa77b51759e33d60b2caf327bb4835351e">eNvFlexLogDebug</a></div><div class="ttdoc">Used only in debug version of dll. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:220</div></div> +<div class="ttc" id="_nv_flex_8h_html_a9b2d3dc5ac42011aeec4e13be2e14252ad0c27f7aafdc4fe569722025c8eb2178"><div class="ttname"><a href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252ad0c27f7aafdc4fe569722025c8eb2178">eNvFlexCUDA</a></div><div class="ttdoc">Use CUDA compute for Flex, the application must link against the CUDA libraries. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:241</div></div> +<div class="ttc" id="_nv_flex_8h_html_ac2f8dff9857a86683aa6e55c058888d7"><div class="ttname"><a href="_nv_flex_8h.html#ac2f8dff9857a86683aa6e55c058888d7">NvFlexParams::relaxationMode</a></div><div class="ttdeci">NvFlexRelaxationMode relaxationMode</div><div class="ttdoc">How the relaxation is applied inside the solver. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:159</div></div> +<div class="ttc" id="_nv_flex_8h_html_af9bb710afb22ec5ed50679aef8717777"><div class="ttname"><a href="_nv_flex_8h.html#af9bb710afb22ec5ed50679aef8717777">NvFlexParams::lift</a></div><div class="ttdeci">float lift</div><div class="ttdoc">Lift force applied to particles belonging to dynamic triangles, proportional to velocity^2*area in th...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:123</div></div> +<div class="ttc" id="_nv_flex_8h_html_a2ac0a898a565a2cdf13b80acd4a3555c"><div class="ttname"><a href="_nv_flex_8h.html#a2ac0a898a565a2cdf13b80acd4a3555c">NvFlexGetDeviceAndContext</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetDeviceAndContext(NvFlexLibrary *lib, void **device, void **context)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a7e760844341b78a547ca4e29abf48806"><div class="ttname"><a href="_nv_flex_8h.html#a7e760844341b78a547ca4e29abf48806">NvFlexInitDesc::renderDevice</a></div><div class="ttdeci">void * renderDevice</div><div class="ttdoc">Direct3D device to use for simulation, if none is specified a new device and context will be created...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:281</div></div> +<div class="ttc" id="_nv_flex_8h_html_a0506ae712f846087b8647ea389ac26baab17c8dd4f9500016b77a9b49de3c48e7"><div class="ttname"><a href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baab17c8dd4f9500016b77a9b49de3c48e7">eNvFlexShapeBox</a></div><div class="ttdoc">A box shape, see FlexBoxGeometry. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:826</div></div> +<div class="ttc" id="_nv_flex_8h_html_a6198445df7f341ec75f37e1dfb44830c"><div class="ttname"><a href="_nv_flex_8h.html#a6198445df7f341ec75f37e1dfb44830c">NvFlexParams::damping</a></div><div class="ttdeci">float damping</div><div class="ttdoc">Viscous drag force, applies a force proportional, and opposite to the particle velocity. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:118</div></div> +<div class="ttc" id="_nv_flex_8h_html_aa03d94be697cdc3aaa56e469d87255a4"><div class="ttname"><a href="_nv_flex_8h.html#aa03d94be697cdc3aaa56e469d87255a4">NvFlexSetDynamicTriangles</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetDynamicTriangles(NvFlexSolver *solver, NvFlexBuffer *indices, NvFlexBuffer *normals, int numTris)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a31c31ea4f96cd4fdadc6b7317691304c"><div class="ttname"><a href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304c">NvFlexCollisionShapeFlags</a></div><div class="ttdeci">NvFlexCollisionShapeFlags</div><div class="ttdef"><b>Definition:</b> NvFlex.h:832</div></div> +<div class="ttc" id="_nv_flex_8h_html_ab4f2eb16c8aba6371fbae51a991eaaa5"><div class="ttname"><a href="_nv_flex_8h.html#ab4f2eb16c8aba6371fbae51a991eaaa5">NvFlexParams::numPlanes</a></div><div class="ttdeci">int numPlanes</div><div class="ttdoc">Num collision planes. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:157</div></div> +<div class="ttc" id="_nv_flex_8h_html_a69289002a6f8ecd697118f0ec6572f5d"><div class="ttname"><a href="_nv_flex_8h.html#a69289002a6f8ecd697118f0ec6572f5d">NvFlexUpdateConvexMesh</a></div><div class="ttdeci">NV_FLEX_API void NvFlexUpdateConvexMesh(NvFlexLibrary *lib, NvFlexConvexMeshId convex, NvFlexBuffer *planes, int numPlanes, float *lower, float *upper)</div></div> +<div class="ttc" id="_nv_flex_8h_html_ad48f83b8442323687d2268206e913496"><div class="ttname"><a href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer</a></div><div class="ttdeci">NV_FLEX_API NvFlexBuffer * NvFlexAllocBuffer(NvFlexLibrary *lib, int elementCount, int elementByteStride, NvFlexBufferType type)</div></div> +<div class="ttc" id="_nv_flex_8h_html_struct_nv_flex_params"><div class="ttname"><a href="_nv_flex_8h.html#struct_nv_flex_params">NvFlexParams</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:96</div></div> +<div class="ttc" id="_nv_flex_8h_html_ae4203fb9cf4772c3186f96cc2d9f6ea8"><div class="ttname"><a href="_nv_flex_8h.html#ae4203fb9cf4772c3186f96cc2d9f6ea8">NvFlexTimers::collideShapes</a></div><div class="ttdeci">float collideShapes</div><div class="ttdoc">Time spent colliding convex shapes. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:192</div></div> +<div class="ttc" id="_nv_flex_8h_html_af7a56fc54644e7020e105f2ff41dfb60"><div class="ttname"><a href="_nv_flex_8h.html#af7a56fc54644e7020e105f2ff41dfb60">NvFlexParams::particleFriction</a></div><div class="ttdeci">float particleFriction</div><div class="ttdoc">Coefficient of friction used when colliding particles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:108</div></div> +<div class="ttc" id="_nv_flex_8h_html_ac75370f005fd453fe8a324fe62be1b5c"><div class="ttname"><a href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver</a></div><div class="ttdeci">NV_FLEX_API void NvFlexUpdateSolver(NvFlexSolver *solver, float dt, int substeps, bool enableTimers)</div></div> +<div class="ttc" id="_nv_flex_8h_html_add03fd357383845f07e0596290faf316"><div class="ttname"><a href="_nv_flex_8h.html#add03fd357383845f07e0596290faf316">NvFlexSetNormals</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetNormals(NvFlexSolver *solver, NvFlexBuffer *normals, int n)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a3eafe7fe6b200c757c7402eca7d13f6d"><div class="ttname"><a href="_nv_flex_8h.html#a3eafe7fe6b200c757c7402eca7d13f6d">NvFlexGetRigidTransforms</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetRigidTransforms(NvFlexSolver *solver, NvFlexBuffer *rotations, NvFlexBuffer *translations)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a98b4df3721709c862ef5d09edcc6d4c3"><div class="ttname"><a href="_nv_flex_8h.html#a98b4df3721709c862ef5d09edcc6d4c3">NvFlexTimers::createGrid</a></div><div class="ttdeci">float createGrid</div><div class="ttdoc">Time spent creating grid. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:189</div></div> +<div class="ttc" id="_nv_flex_8h_html_a5ad2a7745fcb4d4afd5b5f1bda074644ad108f6ebf28346813cfd3602d984bb32"><div class="ttname"><a href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644ad108f6ebf28346813cfd3602d984bb32">eNvFlexPhaseGroupMask</a></div><div class="ttdoc">Low 24 bits represent the particle group for controlling collisions. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:168</div></div> +<div class="ttc" id="_nv_flex_8h_html_a84f06fff995d8eb034cff81c811fa312"><div class="ttname"><a href="_nv_flex_8h.html#a84f06fff995d8eb034cff81c811fa312">NvFlexGetParticles</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetParticles(NvFlexSolver *solver, NvFlexBuffer *p, int n)</div></div> +<div class="ttc" id="_nv_flex_8h_html_ae2e480822cc06ec249ee2557f6cc8ee1"><div class="ttname"><a href="_nv_flex_8h.html#ae2e480822cc06ec249ee2557f6cc8ee1">NvFlexParams::buoyancy</a></div><div class="ttdeci">float buoyancy</div><div class="ttdoc">Gravity is scaled by this value for fluid particles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:137</div></div> +<div class="ttc" id="_nv_flex_8h_html_ab4435b3857752360375fe52fc992cfcaa8feff72c0b0391e8adf3ddb6c39ef10e"><div class="ttname"><a href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8feff72c0b0391e8adf3ddb6c39ef10e">eNvFlexLogAll</a></div><div class="ttdoc">All log types. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:221</div></div> +<div class="ttc" id="_nv_flex_8h_html_aea4e7117722df53dfe44c676496117fa"><div class="ttname"><a href="_nv_flex_8h.html#aea4e7117722df53dfe44c676496117fa">NvFlexSetShapes</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetShapes(NvFlexSolver *solver, NvFlexBuffer *geometry, NvFlexBuffer *shapePositions, NvFlexBuffer *shapeRotations, NvFlexBuffer *shapePrevPositions, NvFlexBuffer *shapePrevRotations, NvFlexBuffer *shapeFlags, int numShapes)</div></div> +<div class="ttc" id="_nv_flex_8h_html_abef057ac89ba5cf1cd71f0084f9313de"><div class="ttname"><a href="_nv_flex_8h.html#abef057ac89ba5cf1cd71f0084f9313de">NvFlexSetParticles</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetParticles(NvFlexSolver *solver, NvFlexBuffer *p, int n)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a9b2d3dc5ac42011aeec4e13be2e14252a15e78a7baf13cc7fd73f255ac84f0943"><div class="ttname"><a href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a15e78a7baf13cc7fd73f255ac84f0943">eNvFlexD3D12</a></div><div class="ttdoc">Use DirectX 12 compute for Flex, the application must link against the D3D libraries. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:243</div></div> +<div class="ttc" id="_nv_flex_8h_html_ab6e2aa06b69e92cbd3b2bca19f18e794"><div class="ttname"><a href="_nv_flex_8h.html#ab6e2aa06b69e92cbd3b2bca19f18e794">NvFlexTriangleMeshGeometry::scale</a></div><div class="ttdeci">float scale[3]</div><div class="ttdoc">The scale of the object from local space to world space. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:794</div></div> +<div class="ttc" id="_nv_flex_8h_html_abe52b62e7af361f387d67414b9e2cf9b"><div class="ttname"><a href="_nv_flex_8h.html#abe52b62e7af361f387d67414b9e2cf9b">NvFlexTimers::solveDensities</a></div><div class="ttdeci">float solveDensities</div><div class="ttdoc">Time spent solving density constraints. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:196</div></div> +<div class="ttc" id="_nv_flex_8h_html_a3a1f5e2ba6c8cad0bc3f3eebd27415f0"><div class="ttname"><a href="_nv_flex_8h.html#a3a1f5e2ba6c8cad0bc3f3eebd27415f0">NvFlexParams::plasticThreshold</a></div><div class="ttdeci">float plasticThreshold</div><div class="ttdoc">Particles belonging to rigid shapes that move with a position delta magnitude > threshold will be per...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:148</div></div> +<div class="ttc" id="_nv_flex_8h_html_a4cb4462803ebff105d151fd45b4efad6"><div class="ttname"><a href="_nv_flex_8h.html#a4cb4462803ebff105d151fd45b4efad6">NvFlexDestroyTriangleMesh</a></div><div class="ttdeci">NV_FLEX_API void NvFlexDestroyTriangleMesh(NvFlexLibrary *lib, NvFlexTriangleMeshId mesh)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a482a7c3b197c4df656e9509fbd04032c"><div class="ttname"><a href="_nv_flex_8h.html#a482a7c3b197c4df656e9509fbd04032c">NvFlexParams::gravity</a></div><div class="ttdeci">float gravity[3]</div><div class="ttdoc">Constant acceleration applied to all particles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:100</div></div> +<div class="ttc" id="_nv_flex_8h_html_a4f80c8bcfa6de99a52983adb13d80db9ab75a912c3990b0fbd6b06a6741a20e69"><div class="ttname"><a href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9ab75a912c3990b0fbd6b06a6741a20e69">eNvFlexStageIterationEnd</a></div><div class="ttdoc">Called at the end of each constraint iteration. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:230</div></div> +<div class="ttc" id="_nv_flex_8h_html_ab4435b3857752360375fe52fc992cfcaa8aed6496f033604148138299fa075edd"><div class="ttname"><a href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8aed6496f033604148138299fa075edd">eNvFlexLogError</a></div><div class="ttdoc">Error messages. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:217</div></div> +<div class="ttc" id="_nv_flex_8h_html_ab559759820a4322aff061745ef26c867"><div class="ttname"><a href="_nv_flex_8h.html#ab559759820a4322aff061745ef26c867">NvFlexFreeBuffer</a></div><div class="ttdeci">NV_FLEX_API void NvFlexFreeBuffer(NvFlexBuffer *buf)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a75eade1512d023cb19da5b7ebbad10f3"><div class="ttname"><a href="_nv_flex_8h.html#a75eade1512d023cb19da5b7ebbad10f3">NvFlexTimers::solveInflatables</a></div><div class="ttdeci">float solveInflatables</div><div class="ttdoc">Time spent solving pressure constraints. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:201</div></div> +<div class="ttc" id="_nv_flex_8h_html_a4f80c8bcfa6de99a52983adb13d80db9a79ce9005dbc92198a1f180c6afde6a44"><div class="ttname"><a href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a79ce9005dbc92198a1f180c6afde6a44">eNvFlexStageSubstepBegin</a></div><div class="ttdoc">Called at the beginning of each substep after the prediction step has been completed. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:231</div></div> +<div class="ttc" id="_nv_flex_8h_html_a3117f92571613709936291c48414e521"><div class="ttname"><a href="_nv_flex_8h.html#a3117f92571613709936291c48414e521">NvFlexSetPhases</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetPhases(NvFlexSolver *solver, NvFlexBuffer *phases, int n)</div></div> +<div class="ttc" id="_nv_flex_8h_html_struct_nv_flex_init_desc"><div class="ttname"><a href="_nv_flex_8h.html#struct_nv_flex_init_desc">NvFlexInitDesc</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:277</div></div> +<div class="ttc" id="_nv_flex_8h_html_a46f5d35902f7da40628247175a174f3ba33711a4b466d606d68dee43918f819db"><div class="ttname"><a href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba33711a4b466d606d68dee43918f819db">eNvFlexRelaxationGlobal</a></div><div class="ttdoc">The relaxation factor is a fixed multiplier on each constraint's position delta. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:88</div></div> +<div class="ttc" id="_nv_flex_8h_html_struct_nv_flex_capsule_geometry"><div class="ttname"><a href="_nv_flex_8h.html#struct_nv_flex_capsule_geometry">NvFlexCapsuleGeometry</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:766</div></div> +<div class="ttc" id="_nv_flex_8h_html_a3c4d2aa395ff8d0f70a6380448943be2"><div class="ttname"><a href="_nv_flex_8h.html#a3c4d2aa395ff8d0f70a6380448943be2">NvFlexTimers::total</a></div><div class="ttdeci">float total</div><div class="ttdoc">Sum of all timers above. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:209</div></div> +<div class="ttc" id="_nv_flex_8h_html_a5b9af9cf4d889b4772cb61cefda92a87"><div class="ttname"><a href="_nv_flex_8h.html#a5b9af9cf4d889b4772cb61cefda92a87">NvFlexSolverCallbackParams::userData</a></div><div class="ttdeci">void * userData</div><div class="ttdoc">Pointer to the user data provided to NvFlexRegisterSolverCallback() </div><div class="ttdef"><b>Definition:</b> NvFlex.h:261</div></div> +<div class="ttc" id="_nv_flex_8h_html_a1241ff3522eafac4b402370a7a6525d8"><div class="ttname"><a href="_nv_flex_8h.html#a1241ff3522eafac4b402370a7a6525d8">NvFlexCapsuleGeometry::radius</a></div><div class="ttdeci">float radius</div><div class="ttdef"><b>Definition:</b> NvFlex.h:768</div></div> +<div class="ttc" id="_nv_flex_8h_html_abdfd0834422dd99154a27962614525e5"><div class="ttname"><a href="_nv_flex_8h.html#abdfd0834422dd99154a27962614525e5">NvFlexGetDynamicTriangles</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetDynamicTriangles(NvFlexSolver *solver, NvFlexBuffer *indices, NvFlexBuffer *normals, int numTris)</div></div> +<div class="ttc" id="_nv_flex_8h_html_ad6ee1e23e0c49aad63df8f605182de3a"><div class="ttname"><a href="_nv_flex_8h.html#ad6ee1e23e0c49aad63df8f605182de3a">NvFlexMakeShapeFlags</a></div><div class="ttdeci">NV_FLEX_API int NvFlexMakeShapeFlags(NvFlexCollisionShapeType type, bool dynamic)</div><div class="ttdef"><b>Definition:</b> NvFlex.h:844</div></div> +<div class="ttc" id="_nv_flex_8h_html_aab83daf46e5a9428a0ad76fb75e8ec7e"><div class="ttname"><a href="_nv_flex_8h.html#aab83daf46e5a9428a0ad76fb75e8ec7e">NvFlexRegisterOGLBuffer</a></div><div class="ttdeci">NV_FLEX_API NvFlexBuffer * NvFlexRegisterOGLBuffer(NvFlexLibrary *lib, int buf, int elementCount, int elementByteStride)</div></div> +<div class="ttc" id="_nv_flex_8h_html_struct_nv_flex_detail_timer"><div class="ttname"><a href="_nv_flex_8h.html#struct_nv_flex_detail_timer">NvFlexDetailTimer</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:990</div></div> +<div class="ttc" id="_nv_flex_8h_html_a8a1b3c24aa73606bcd47a72473db9629"><div class="ttname"><a href="_nv_flex_8h.html#a8a1b3c24aa73606bcd47a72473db9629">NvFlexParams::relaxationFactor</a></div><div class="ttdeci">float relaxationFactor</div><div class="ttdoc">Control the convergence rate of the parallel solver, default: 1, values greater than 1 may lead to in...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:160</div></div> +<div class="ttc" id="_nv_flex_8h_html_ae67c0cab2ecee8eb9485a26ef0fad6a9"><div class="ttname"><a href="_nv_flex_8h.html#ae67c0cab2ecee8eb9485a26ef0fad6a9">NvFlexSetSprings</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetSprings(NvFlexSolver *solver, NvFlexBuffer *indices, NvFlexBuffer *restLengths, NvFlexBuffer *stiffness, int numSprings)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a9d825db54bc9a0bca998b3654db3b20e"><div class="ttname"><a href="_nv_flex_8h.html#a9d825db54bc9a0bca998b3654db3b20e">NvFlexTimers::finalize</a></div><div class="ttdeci">float finalize</div><div class="ttdoc">Time spent finalizing state. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:207</div></div> +<div class="ttc" id="_nv_flex_8h_html_a9b65813d2a2d3f99db162d39a62481f8"><div class="ttname"><a href="_nv_flex_8h.html#a9b65813d2a2d3f99db162d39a62481f8">NvFlexSolverCallbackParams::sortedToOriginalMap</a></div><div class="ttdeci">const int * sortedToOriginalMap</div><div class="ttdoc">Device pointer that maps the original particle index to the index in the callback data structure...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:272</div></div> +<div class="ttc" id="_nv_flex_8h_html_a9b2d3dc5ac42011aeec4e13be2e14252"><div class="ttname"><a href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252">NvFlexComputeType</a></div><div class="ttdeci">NvFlexComputeType</div><div class="ttdef"><b>Definition:</b> NvFlex.h:239</div></div> +<div class="ttc" id="_nv_flex_8h_html_aea2af336bdd96d7168c3acdce6d1875d"><div class="ttname"><a href="_nv_flex_8h.html#aea2af336bdd96d7168c3acdce6d1875d">NvFlexSetActive</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetActive(NvFlexSolver *solver, NvFlexBuffer *indices, int n)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a27a185172ad1951d40c476ade8307068"><div class="ttname"><a href="_nv_flex_8h.html#a27a185172ad1951d40c476ade8307068">NvFlexParams::dynamicFriction</a></div><div class="ttdeci">float dynamicFriction</div><div class="ttdoc">Coefficient of friction used when colliding against shapes. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:106</div></div> +<div class="ttc" id="_nv_flex_8h_html_a42346069505d3bba70bcdf0a94f0615c"><div class="ttname"><a href="_nv_flex_8h.html#a42346069505d3bba70bcdf0a94f0615c">NvFlexParams::plasticCreep</a></div><div class="ttdeci">float plasticCreep</div><div class="ttdoc">Controls the rate at which particles in the rest pose are deformed for particles passing the deformat...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:149</div></div> +<div class="ttc" id="_nv_flex_8h_html_struct_nv_flex_s_d_f_geometry"><div class="ttname"><a href="_nv_flex_8h.html#struct_nv_flex_s_d_f_geometry">NvFlexSDFGeometry</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:802</div></div> +<div class="ttc" id="_nv_flex_8h_html_a800620cc4888bbe5696c5f0e19b22bb9"><div class="ttname"><a href="_nv_flex_8h.html#a800620cc4888bbe5696c5f0e19b22bb9">NvFlexConvexMeshGeometry::scale</a></div><div class="ttdeci">float scale[3]</div><div class="ttdef"><b>Definition:</b> NvFlex.h:785</div></div> +<div class="ttc" id="struct_nv_flex_solver_callback_html"><div class="ttname"><a href="struct_nv_flex_solver_callback.html">NvFlexSolverCallback</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:289</div></div> +<div class="ttc" id="_nv_flex_8h_html_a5be673031b100c3861fd9eb824fcf00f"><div class="ttname"><a href="_nv_flex_8h.html#a5be673031b100c3861fd9eb824fcf00f">NvFlexParams::diffuseBuoyancy</a></div><div class="ttdeci">float diffuseBuoyancy</div><div class="ttdoc">Scales force opposing gravity that diffuse particles receive. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:141</div></div> +<div class="ttc" id="_nv_flex_8h_html_a2f85189cbc3014b73164cf8c4eb87e0a"><div class="ttname"><a href="_nv_flex_8h.html#a2f85189cbc3014b73164cf8c4eb87e0a">NvFlexTimers::updateBounds</a></div><div class="ttdeci">float updateBounds</div><div class="ttdoc">Time spent updating particle bounds. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:208</div></div> +<div class="ttc" id="_nv_flex_8h_html_a3ddbb30a2fde4a2e9ccec7854300b1d4"><div class="ttname"><a href="_nv_flex_8h.html#a3ddbb30a2fde4a2e9ccec7854300b1d4">NvFlexDetailTimer::name</a></div><div class="ttdeci">char * name</div><div class="ttdef"><b>Definition:</b> NvFlex.h:992</div></div> +<div class="ttc" id="_nv_flex_8h_html_ab7c54d6c0b3d3595780e5179bf62ebc4"><div class="ttname"><a href="_nv_flex_8h.html#ab7c54d6c0b3d3595780e5179bf62ebc4">NvFlexParams::solidRestDistance</a></div><div class="ttdeci">float solidRestDistance</div><div class="ttdoc">The distance non-fluid particles attempt to maintain from each other, must be in the range (0...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:102</div></div> +<div class="ttc" id="_nv_flex_8h_html_a3f93fba688338576ff3258b034525dc5"><div class="ttname"><a href="_nv_flex_8h.html#a3f93fba688338576ff3258b034525dc5">NvFlexParams::solidPressure</a></div><div class="ttdeci">float solidPressure</div><div class="ttdoc">Add pressure from solid surfaces to particles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:135</div></div> +<div class="ttc" id="_nv_flex_8h_html_a4d10188e917ae045e0e903f3db1c638d"><div class="ttname"><a href="_nv_flex_8h.html#a4d10188e917ae045e0e903f3db1c638d">NvFlexTimers::solveVelocities</a></div><div class="ttdeci">float solveVelocities</div><div class="ttdoc">Time spent solving velocity constraints. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:197</div></div> +<div class="ttc" id="_nv_flex_8h_html_a4f80c8bcfa6de99a52983adb13d80db9a1f2e7acff9b3b74922f90240d29fd1b3"><div class="ttname"><a href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a1f2e7acff9b3b74922f90240d29fd1b3">eNvFlexStageCount</a></div><div class="ttdoc">Number of stages. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:234</div></div> +<div class="ttc" id="_nv_flex_8h_html_afc306cb48c313ee518461d60c1014485"><div class="ttname"><a href="_nv_flex_8h.html#afc306cb48c313ee518461d60c1014485">NvFlexParams::restitution</a></div><div class="ttdeci">float restitution</div><div class="ttdoc">Coefficient of restitution used when colliding against shapes, particle collisions are always inelast...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:109</div></div> +<div class="ttc" id="_nv_flex_8h_html_struct_nv_flex_triangle_mesh_geometry"><div class="ttname"><a href="_nv_flex_8h.html#struct_nv_flex_triangle_mesh_geometry">NvFlexTriangleMeshGeometry</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:792</div></div> +<div class="ttc" id="_nv_flex_8h_html_a572c9bf93128466e27d57f225f4d0188"><div class="ttname"><a href="_nv_flex_8h.html#a572c9bf93128466e27d57f225f4d0188">NvFlexParams::numIterations</a></div><div class="ttdeci">int numIterations</div><div class="ttdoc">Number of solver iterations to perform per-substep. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:98</div></div> +<div class="ttc" id="_nv_flex_8h_html_ae6671f352bd77e296609d0bc2a57fd11"><div class="ttname"><a href="_nv_flex_8h.html#ae6671f352bd77e296609d0bc2a57fd11">NvFlexRestoreContext</a></div><div class="ttdeci">NV_FLEX_API void NvFlexRestoreContext(NvFlexLibrary *lib)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a581b458848039220203547af53de128f"><div class="ttname"><a href="_nv_flex_8h.html#a581b458848039220203547af53de128f">NvFlexGetParams</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetParams(NvFlexSolver *solver, NvFlexParams *params)</div></div> +<div class="ttc" id="_nv_flex_8h_html_af7f91fa47c779fcd8bee60061de6d31c"><div class="ttname"><a href="_nv_flex_8h.html#af7f91fa47c779fcd8bee60061de6d31c">NvFlexCreateSolver</a></div><div class="ttdeci">NV_FLEX_API NvFlexSolver * NvFlexCreateSolver(NvFlexLibrary *lib, int maxParticles, int maxDiffuseParticles, int maxNeighborsPerParticle=96)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a608af97e77a912e959b0e825082a9cd6"><div class="ttname"><a href="_nv_flex_8h.html#a608af97e77a912e959b0e825082a9cd6">NvFlexParams::anisotropyScale</a></div><div class="ttdeci">float anisotropyScale</div><div class="ttdoc">Control how much anisotropy is present in resulting ellipsoids for rendering, if zero then anisotropy...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:131</div></div> +<div class="ttc" id="_nv_flex_8h_html_ae763dd9bfcfa4092c0165a506e32e18b"><div class="ttname"><a href="_nv_flex_8h.html#ae763dd9bfcfa4092c0165a506e32e18b">NvFlexParams::vorticityConfinement</a></div><div class="ttdeci">float vorticityConfinement</div><div class="ttdoc">Increases vorticity by applying rotational forces to particles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:130</div></div> +<div class="ttc" id="_nv_flex_8h_html_a37ada4b95999cc253dfb049b99030d50"><div class="ttname"><a href="_nv_flex_8h.html#a37ada4b95999cc253dfb049b99030d50">NvFlexGetDiffuseParticles</a></div><div class="ttdeci">NV_FLEX_API int NvFlexGetDiffuseParticles(NvFlexSolver *solver, NvFlexBuffer *p, NvFlexBuffer *v, NvFlexBuffer *indices)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a469950744e0b7222969762a89b992255"><div class="ttname"><a href="_nv_flex_8h.html#a469950744e0b7222969762a89b992255">NvFlexParams::diffuseLifetime</a></div><div class="ttdeci">float diffuseLifetime</div><div class="ttdoc">Time in seconds that a diffuse particle will live for after being spawned, particles will be spawned ...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:145</div></div> +<div class="ttc" id="_nv_flex_8h_html_a4bf0ccff128c165560dba52afb748d7e"><div class="ttname"><a href="_nv_flex_8h.html#a4bf0ccff128c165560dba52afb748d7e">NvFlexParams::diffuseDrag</a></div><div class="ttdeci">float diffuseDrag</div><div class="ttdoc">Scales force diffuse particles receive in direction of neighbor fluid particles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:142</div></div> +<div class="ttc" id="_nv_flex_8h_html_aeecd11525503649b579ae262b671fbc8"><div class="ttname"><a href="_nv_flex_8h.html#aeecd11525503649b579ae262b671fbc8">NvFlexParams::particleCollisionMargin</a></div><div class="ttdeci">float particleCollisionMargin</div><div class="ttdoc">Increases the radius used during neighbor finding, this is useful if particles are expected to move s...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:153</div></div> +<div class="ttc" id="_nv_flex_8h_html_acdde802d58e1558c03e449e04ae33f15"><div class="ttname"><a href="_nv_flex_8h.html#acdde802d58e1558c03e449e04ae33f15">NvFlexParams::diffuseThreshold</a></div><div class="ttdeci">float diffuseThreshold</div><div class="ttdoc">Particles with kinetic energy + divergence above this threshold will spawn new diffuse particles...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:140</div></div> +<div class="ttc" id="_nv_flex_8h_html_a169e4c126acf46bdebf76c36a44deca3a103255fa795b55a7f430a41493002576"><div class="ttname"><a href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3a103255fa795b55a7f430a41493002576">eNvFlexBufferDevice</a></div><div class="ttdoc">Device memory buffer, mapping this on CUDA will return a device memory pointer, and will return a buf...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:80</div></div> +<div class="ttc" id="_nv_flex_8h_html_aab5f90f4024d71d08c3f9327c6d8c184"><div class="ttname"><a href="_nv_flex_8h.html#aab5f90f4024d71d08c3f9327c6d8c184">NvFlexGetSprings</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetSprings(NvFlexSolver *solver, NvFlexBuffer *indices, NvFlexBuffer *restLengths, NvFlexBuffer *stiffness, int numSprings)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a0506ae712f846087b8647ea389ac26baaed52f0e803c6745ffc1a5f018a8756ce"><div class="ttname"><a href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baaed52f0e803c6745ffc1a5f018a8756ce">eNvFlexShapeConvexMesh</a></div><div class="ttdoc">A convex mesh shape, see FlexConvexMeshGeometry. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:827</div></div> +<div class="ttc" id="_nv_flex_8h_html_a8cb34cbcf9def6817d6d5d3c07177052"><div class="ttname"><a href="_nv_flex_8h.html#a8cb34cbcf9def6817d6d5d3c07177052">NvFlexTimers::updateTriangles</a></div><div class="ttdeci">float updateTriangles</div><div class="ttdoc">Time spent updating dynamic triangles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:205</div></div> +<div class="ttc" id="_nv_flex_8h_html_a169e4c126acf46bdebf76c36a44deca3"><div class="ttname"><a href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3">NvFlexBufferType</a></div><div class="ttdeci">NvFlexBufferType</div><div class="ttdef"><b>Definition:</b> NvFlex.h:77</div></div> +<div class="ttc" id="_nv_flex_8h_html_a23b8779c1516647ef5ed7f8010d619ff"><div class="ttname"><a href="_nv_flex_8h.html#a23b8779c1516647ef5ed7f8010d619ff">NvFlexInitDesc::enableExtensions</a></div><div class="ttdeci">bool enableExtensions</div><div class="ttdoc">Enable or disable NVIDIA/AMD extensions in DirectX, can lead to improved performance. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:280</div></div> +<div class="ttc" id="_nv_flex_8h_html_a7ab5aa68da7ca1f69211a900f1a1c586"><div class="ttname"><a href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a></div><div class="ttdeci">unsigned int NvFlexConvexMeshId</div><div class="ttdef"><b>Definition:</b> NvFlex.h:645</div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Wed Feb 22 2017 12:18:22 for FLEX by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.9.1 +</small></address> +</body> +</html> diff --git a/doc/_static/api/_nv_flex_device_8h.html b/doc/_static/api/_nv_flex_device_8h.html new file mode 100644 index 0000000..20f041b --- /dev/null +++ b/doc/_static/api/_nv_flex_device_8h.html @@ -0,0 +1,123 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.9.1"/> +<title>FLEX: NvFlexDevice.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +<link href="flex.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">FLEX +  <span id="projectnumber">1.1.0</span> + </div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.9.1 --> +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">NvFlexDevice.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> + +<p><a href="_nv_flex_device_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:a914a7e6338379d00397bd3e7e07c0280"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API int </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_device_8h.html#a914a7e6338379d00397bd3e7e07c0280">NvFlexDeviceGetSuggestedOrdinal</a> ()</td></tr> +<tr class="separator:a914a7e6338379d00397bd3e7e07c0280"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a922c489035a9bdb84bee1cd0ef73558d"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API bool </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_device_8h.html#a922c489035a9bdb84bee1cd0ef73558d">NvFlexDeviceCreateCudaContext</a> (int ordinal)</td></tr> +<tr class="separator:a922c489035a9bdb84bee1cd0ef73558d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a97f4f513f226d573410478fa6d79f05a"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_device_8h.html#a97f4f513f226d573410478fa6d79f05a">NvFlexDeviceDestroyCudaContext</a> ()</td></tr> +<tr class="separator:a97f4f513f226d573410478fa6d79f05a"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> +<div class="textblock"><p>NvFlexDevice is an optional helper library that performs some initialization tasks related to GPU device management. The library can be used to query the NVIDIA PhysX control panel for the selected "PhysX" GPU, and to create an optimized CUDA context. Currently the library is a closed source component but is purely optional. See the FlexDemo for an example of how to use the device API. </p> +</div><h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="a914a7e6338379d00397bd3e7e07c0280"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API int NvFlexDeviceGetSuggestedOrdinal </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Returns the CUDA ordinal of the GPU selected as "PhysX" in the NVIDIA control panel. Returns -1 if there is no NVIDIA CUDA device available.</p> +<dl class="section note"><dt>Note</dt><dd>The returned ordinal is a CUDA ordinal and does not correspond to the DXGI ordinal. D3D users should use their own device selection method and pass the appropriate DXGI device index or custom D3D devices to <a class="el" href="_nv_flex_8h.html#a687e5ec141948f779faa9183b68cb743">NvFlexInit()</a>. </dd></dl> + +</div> +</div> +<a class="anchor" id="a922c489035a9bdb84bee1cd0ef73558d"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API bool NvFlexDeviceCreateCudaContext </td> + <td>(</td> + <td class="paramtype">int </td> + <td class="paramname"><em>ordinal</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Creates a CUDA context optimized for Flex, returns true on success and sets the context as current on the calling thread. If using this method to initialize CUDA then you should ensure that no prior CUDA calls are made prior to avoid creating multiple contexts.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">ordinal</td><td>The CUDA ordinal of the GPU to create the context on, this can be the suggested ordinal (see flexDeviceGetSuggestedOrdinal()), or a manually selected ordinal. </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a97f4f513f226d573410478fa6d79f05a"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexDeviceDestroyCudaContext </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Destroy the context associated with the current thread, can be used to destroy the CUDA context created by flexDeviceCreateCudaContext(). </p> + +</div> +</div> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Wed Feb 22 2017 12:18:22 for FLEX by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.9.1 +</small></address> +</body> +</html> diff --git a/doc/_static/api/_nv_flex_device_8h_source.html b/doc/_static/api/_nv_flex_device_8h_source.html new file mode 100644 index 0000000..42e8d54 --- /dev/null +++ b/doc/_static/api/_nv_flex_device_8h_source.html @@ -0,0 +1,99 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.9.1"/> +<title>FLEX: NvFlexDevice.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +<link href="flex.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">FLEX +  <span id="projectnumber">1.1.0</span> + </div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.9.1 --> +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">NvFlexDevice.h</div> </div> +</div><!--header--> +<div class="contents"> +<a href="_nv_flex_device_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// This code contains NVIDIA Confidential Information and is disclosed to you</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// under a form of NVIDIA software license agreement provided separately to you.</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">//</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// Notice</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// NVIDIA Corporation and its licensors retain all intellectual property and</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// proprietary rights in and to this software and related documentation and</span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// any modifications thereto. Any use, reproduction, disclosure, or</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distribution of this software and related documentation without an express</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// license agreement from NVIDIA Corporation is strictly prohibited.</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,</span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">//</span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// Information and code furnished is believed to be accurate and reliable.</span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// information or for any infringement of patents or other rights of third parties that may</span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// result from its use. No license is granted by implication or otherwise under any patent</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">// or patent rights of NVIDIA Corporation. Details are subject to change without notice.</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">// This code supersedes and replaces all information previously supplied.</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">// NVIDIA Corporation products are not authorized for use as critical</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">// components in life support devices or systems without express written approval of</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// NVIDIA Corporation.</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">//</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Copyright (c) 2013-2017 NVIDIA Corporation. All rights reserved.</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#ifndef NV_FLEX_DEVICE_H</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#define NV_FLEX_DEVICE_H</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#ifndef NV_FLEX_API</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#if _WIN32</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#define NV_FLEX_API __declspec(dllexport)</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#define NV_FLEX_API</span></div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> NV_FLEX_API <span class="keywordtype">int</span> <a class="code" href="_nv_flex_device_8h.html#a914a7e6338379d00397bd3e7e07c0280">NvFlexDeviceGetSuggestedOrdinal</a>();</div> +<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div> +<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> NV_FLEX_API <span class="keywordtype">bool</span> <a class="code" href="_nv_flex_device_8h.html#a922c489035a9bdb84bee1cd0ef73558d">NvFlexDeviceCreateCudaContext</a>(<span class="keywordtype">int</span> ordinal);</div> +<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div> +<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_device_8h.html#a97f4f513f226d573410478fa6d79f05a">NvFlexDeviceDestroyCudaContext</a>();</div> +<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div> +<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div> +<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor">#endif // NV_FLEX_DEVICE_H</span></div> +<div class="ttc" id="_nv_flex_device_8h_html_a914a7e6338379d00397bd3e7e07c0280"><div class="ttname"><a href="_nv_flex_device_8h.html#a914a7e6338379d00397bd3e7e07c0280">NvFlexDeviceGetSuggestedOrdinal</a></div><div class="ttdeci">NV_FLEX_API int NvFlexDeviceGetSuggestedOrdinal()</div></div> +<div class="ttc" id="_nv_flex_device_8h_html_a922c489035a9bdb84bee1cd0ef73558d"><div class="ttname"><a href="_nv_flex_device_8h.html#a922c489035a9bdb84bee1cd0ef73558d">NvFlexDeviceCreateCudaContext</a></div><div class="ttdeci">NV_FLEX_API bool NvFlexDeviceCreateCudaContext(int ordinal)</div></div> +<div class="ttc" id="_nv_flex_device_8h_html_a97f4f513f226d573410478fa6d79f05a"><div class="ttname"><a href="_nv_flex_device_8h.html#a97f4f513f226d573410478fa6d79f05a">NvFlexDeviceDestroyCudaContext</a></div><div class="ttdeci">NV_FLEX_API void NvFlexDeviceDestroyCudaContext()</div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Wed Feb 22 2017 12:18:22 for FLEX by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.9.1 +</small></address> +</body> +</html> diff --git a/doc/_static/api/_nv_flex_ext_8h.html b/doc/_static/api/_nv_flex_ext_8h.html new file mode 100644 index 0000000..fc0433a --- /dev/null +++ b/doc/_static/api/_nv_flex_ext_8h.html @@ -0,0 +1,2121 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.9.1"/> +<title>FLEX: NvFlexExt.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +<link href="flex.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">FLEX +  <span id="projectnumber">1.1.0</span> + </div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.9.1 --> +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Data Structures</a> | +<a href="#typedef-members">Typedefs</a> | +<a href="#enum-members">Enumerations</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">NvFlexExt.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> + +<p><a href="_nv_flex_ext_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Data Structures</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html">NvFlexVector< T ></a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:struct_nv_flex_ext_moving_frame"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a></td></tr> +<tr class="separator:struct_nv_flex_ext_moving_frame"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:struct_nv_flex_ext_asset"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a></td></tr> +<tr class="separator:struct_nv_flex_ext_asset"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:struct_nv_flex_ext_instance"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_instance">NvFlexExtInstance</a></td></tr> +<tr class="separator:struct_nv_flex_ext_instance"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:struct_nv_flex_ext_tearing_particle_clone"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_particle_clone">NvFlexExtTearingParticleClone</a></td></tr> +<tr class="separator:struct_nv_flex_ext_tearing_particle_clone"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:struct_nv_flex_ext_tearing_mesh_edit"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_mesh_edit">NvFlexExtTearingMeshEdit</a></td></tr> +<tr class="separator:struct_nv_flex_ext_tearing_mesh_edit"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:struct_nv_flex_ext_particle_data"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_particle_data">NvFlexExtParticleData</a></td></tr> +<tr class="separator:struct_nv_flex_ext_particle_data"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:struct_nv_flex_ext_triangle_data"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_triangle_data">NvFlexExtTriangleData</a></td></tr> +<tr class="separator:struct_nv_flex_ext_triangle_data"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:struct_nv_flex_ext_shape_data"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_shape_data">NvFlexExtShapeData</a></td></tr> +<tr class="separator:struct_nv_flex_ext_shape_data"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:struct_nv_flex_ext_force_field"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_force_field">NvFlexExtForceField</a></td></tr> +<tr class="separator:struct_nv_flex_ext_force_field"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> +Typedefs</h2></td></tr> +<tr class="memitem:afaf84632a42346a718009bcda5efc8b4"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a></td></tr> +<tr class="separator:afaf84632a42346a718009bcda5efc8b4"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a1117ce527b6b483cc756ab5352f6dc3f"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a></td></tr> +<tr class="separator:a1117ce527b6b483cc756ab5352f6dc3f"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> +Enumerations</h2></td></tr> +<tr class="memitem:a502acd5c1db4ba6eef61eba25f26d68e"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68e">NvFlexExtForceMode</a> { <br /> +  <a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea9d4e8413b628837f9d1982897fd1f4a2">eNvFlexExtModeForce</a> = 0, +<br /> +  <a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea92265f22fc2a724baf640fdace8f8ea0">eNvFlexExtModeImpulse</a> = 1, +<br /> +  <a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea6a2e4817b1e86764147c81e8d5e5070c">eNvFlexExtModeVelocityChange</a> = 2 +<br /> + }</td></tr> +<tr class="separator:a502acd5c1db4ba6eef61eba25f26d68e"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:a6a20d814e3b083b069daa0f20a3e756e"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a6a20d814e3b083b069daa0f20a3e756e">NvFlexExtMovingFrameInit</a> (<a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a> *frame, const float *worldTranslation, const float *worldRotation)</td></tr> +<tr class="separator:a6a20d814e3b083b069daa0f20a3e756e"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a780022c1b8425074ce08328e8e8c35cc"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a780022c1b8425074ce08328e8e8c35cc">NvFlexExtMovingFrameUpdate</a> (<a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a> *frame, const float *worldTranslation, const float *worldRotation, float dt)</td></tr> +<tr class="separator:a780022c1b8425074ce08328e8e8c35cc"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4ffe9bcd59a6cfc8900ac136f5123304"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a4ffe9bcd59a6cfc8900ac136f5123304">NvFlexExtMovingFrameApply</a> (<a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a> *frame, float *positions, float *velocities, int numParticles, float linearScale, float angularScale, float dt)</td></tr> +<tr class="separator:a4ffe9bcd59a6cfc8900ac136f5123304"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a82a15dfd40b338a07cf4517f55f16720"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API int </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a82a15dfd40b338a07cf4517f55f16720">NvFlexExtCreateWeldedMeshIndices</a> (const float *vertices, int numVertices, int *uniqueVerts, int *originalToUniqueMap, float threshold)</td></tr> +<tr class="separator:a82a15dfd40b338a07cf4517f55f16720"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a8bef033b2a8567dfcc954e22534147ee"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a8bef033b2a8567dfcc954e22534147ee">NvFlexExtCreateClothFromMesh</a> (const float *particles, int numParticles, const int *indices, int numTriangles, float stretchStiffness, float bendStiffness, float tetherStiffness, float tetherGive, float pressure)</td></tr> +<tr class="separator:a8bef033b2a8567dfcc954e22534147ee"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:addad82b3598059ffde7b3b5babe17bd4"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#addad82b3598059ffde7b3b5babe17bd4">NvFlexExtCreateTearingClothFromMesh</a> (const float *particles, int numParticles, int maxParticles, const int *indices, int numTriangles, float stretchStiffness, float bendStiffness, float pressure)</td></tr> +<tr class="separator:addad82b3598059ffde7b3b5babe17bd4"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a88054283907d3386f1a30cdc4475acb0"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a88054283907d3386f1a30cdc4475acb0">NvFlexExtDestroyTearingCloth</a> (<a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> *asset)</td></tr> +<tr class="separator:a88054283907d3386f1a30cdc4475acb0"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5efc0113d5432eb959437e6e3a98cc5f"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a5efc0113d5432eb959437e6e3a98cc5f">NvFlexExtTearClothMesh</a> (<a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> *asset, float maxStrain, int maxSplits, <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_particle_clone">NvFlexExtTearingParticleClone</a> *particleCopies, int *numParticleCopies, int maxCopies, <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_mesh_edit">NvFlexExtTearingMeshEdit</a> *triangleEdits, int *numTriangleEdits, int maxEdits)</td></tr> +<tr class="separator:a5efc0113d5432eb959437e6e3a98cc5f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad0a9c7e2f907e46b60f6bacf402987ce"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#ad0a9c7e2f907e46b60f6bacf402987ce">NvFlexExtCreateRigidFromMesh</a> (const float *vertices, int numVertices, const int *indices, int numTriangleIndices, float radius, float expand)</td></tr> +<tr class="separator:ad0a9c7e2f907e46b60f6bacf402987ce"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a9f2c0daf521df4920e44cca1cb30b42c"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a9f2c0daf521df4920e44cca1cb30b42c">NvFlexExtCreateSoftFromMesh</a> (const float *vertices, int numVertices, const int *indices, int numTriangleIndices, float particleSpacing, float volumeSampling, float surfaceSampling, float clusterSpacing, float clusterRadius, float clusterStiffness, float linkRadius, float linkStiffness, float globalStiffness)</td></tr> +<tr class="separator:a9f2c0daf521df4920e44cca1cb30b42c"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a36c33fafe13c5fd5773bf9a2af2dd745"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a36c33fafe13c5fd5773bf9a2af2dd745">NvFlexExtDestroyAsset</a> (<a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> *asset)</td></tr> +<tr class="separator:a36c33fafe13c5fd5773bf9a2af2dd745"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a6e3f12e9e92abb31b115cf31b33e34bb"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a6e3f12e9e92abb31b115cf31b33e34bb">NvFlexExtCreateSoftMeshSkinning</a> (const float *vertices, int numVertices, const float *bones, int numBones, float falloff, float maxDistance, float *skinningWeights, int *skinningIndices)</td></tr> +<tr class="separator:a6e3f12e9e92abb31b115cf31b33e34bb"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a49906c9e3466d40383cddf627fe26658"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a49906c9e3466d40383cddf627fe26658">NvFlexExtCreateContainer</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, <a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, int maxParticles)</td></tr> +<tr class="separator:a49906c9e3466d40383cddf627fe26658"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2509137d9fb8ab6818f35ab7761da7a5"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a2509137d9fb8ab6818f35ab7761da7a5">NvFlexExtDestroyContainer</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container)</td></tr> +<tr class="separator:a2509137d9fb8ab6818f35ab7761da7a5"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a7c036ccca83df3659529858068e0593d"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API int </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a7c036ccca83df3659529858068e0593d">NvFlexExtAllocParticles</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container, int n, int *indices)</td></tr> +<tr class="separator:a7c036ccca83df3659529858068e0593d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ab0a259d159116b7fba9b229784b02c70"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#ab0a259d159116b7fba9b229784b02c70">NvFlexExtFreeParticles</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container, int n, const int *indices)</td></tr> +<tr class="separator:ab0a259d159116b7fba9b229784b02c70"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a7fc268a27306f6fc68dd1c106cfa62db"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API int </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a7fc268a27306f6fc68dd1c106cfa62db">NvFlexExtGetActiveList</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container, int *indices)</td></tr> +<tr class="separator:a7fc268a27306f6fc68dd1c106cfa62db"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3fa8bd4b7d4096602e611faf0bb62dfb"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_particle_data">NvFlexExtParticleData</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a3fa8bd4b7d4096602e611faf0bb62dfb">NvFlexExtMapParticleData</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container)</td></tr> +<tr class="separator:a3fa8bd4b7d4096602e611faf0bb62dfb"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:af0cd639c21be28640fe5e1dd94931d59"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#af0cd639c21be28640fe5e1dd94931d59">NvFlexExtUnmapParticleData</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container)</td></tr> +<tr class="separator:af0cd639c21be28640fe5e1dd94931d59"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a1646bf409084777cd0ff5d4fcccf07de"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_triangle_data">NvFlexExtTriangleData</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a1646bf409084777cd0ff5d4fcccf07de">NvFlexExtMapTriangleData</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container)</td></tr> +<tr class="separator:a1646bf409084777cd0ff5d4fcccf07de"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a89e582ae93e0256b06f22d9abf361783"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a89e582ae93e0256b06f22d9abf361783">NvFlexExtUnmapTriangleData</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container)</td></tr> +<tr class="separator:a89e582ae93e0256b06f22d9abf361783"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a90f2d3ba5be20e70e7efead911ee7acc"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_shape_data">NvFlexExtShapeData</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a90f2d3ba5be20e70e7efead911ee7acc">NvFlexExtMapShapeData</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container)</td></tr> +<tr class="separator:a90f2d3ba5be20e70e7efead911ee7acc"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ab51f04114586b5bf0f6fc5816fda9c69"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#ab51f04114586b5bf0f6fc5816fda9c69">NvFlexExtUnmapShapeData</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container)</td></tr> +<tr class="separator:ab51f04114586b5bf0f6fc5816fda9c69"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3bf10e2c9370602142b7be01e920f973"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_instance">NvFlexExtInstance</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a3bf10e2c9370602142b7be01e920f973">NvFlexExtCreateInstance</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container, <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_particle_data">NvFlexExtParticleData</a> *particleData, const <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> *asset, const float *transform, float vx, float vy, float vz, int phase, float invMassScale)</td></tr> +<tr class="separator:a3bf10e2c9370602142b7be01e920f973"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2b5634f64bd0d8d86f894885a1c16a33"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a2b5634f64bd0d8d86f894885a1c16a33">NvFlexExtDestroyInstance</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container, const <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_instance">NvFlexExtInstance</a> *instance)</td></tr> +<tr class="separator:a2b5634f64bd0d8d86f894885a1c16a33"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad9343d07f49098ee205a1ed48dc9db34"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#ad9343d07f49098ee205a1ed48dc9db34">NvFlexExtNotifyAssetChanged</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container, const <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> *asset)</td></tr> +<tr class="separator:ad9343d07f49098ee205a1ed48dc9db34"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ab4caadf5a6b19674849bfce91d986e7b"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#ab4caadf5a6b19674849bfce91d986e7b">NvFlexExtTickContainer</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container, float dt, int numSubsteps, bool enableTimers=false)</td></tr> +<tr class="separator:ab4caadf5a6b19674849bfce91d986e7b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a425f4e472bb83797498c904ab228209c"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a425f4e472bb83797498c904ab228209c">NvFlexExtPushToDevice</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container)</td></tr> +<tr class="separator:a425f4e472bb83797498c904ab228209c"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a89ea7bbd26bec46f1b82d84257de1f58"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a89ea7bbd26bec46f1b82d84257de1f58">NvFlexExtPullFromDevice</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container)</td></tr> +<tr class="separator:a89ea7bbd26bec46f1b82d84257de1f58"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4695d37db8b61495f200bfd88a2be628"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a4695d37db8b61495f200bfd88a2be628">NvFlexExtUpdateInstances</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container)</td></tr> +<tr class="separator:a4695d37db8b61495f200bfd88a2be628"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac1ed9ff49120d0691352399c8173bdcf"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#ac1ed9ff49120d0691352399c8173bdcf">NvFlexExtCreateForceFieldCallback</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver)</td></tr> +<tr class="separator:ac1ed9ff49120d0691352399c8173bdcf"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad08da77f432ca56bc59647bf73da86cb"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#ad08da77f432ca56bc59647bf73da86cb">NvFlexExtDestroyForceFieldCallback</a> (<a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a> *callback)</td></tr> +<tr class="separator:ad08da77f432ca56bc59647bf73da86cb"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aa36d43b9e53b9b66d43c2bc5eb5abf98"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#aa36d43b9e53b9b66d43c2bc5eb5abf98">NvFlexExtSetForceFields</a> (<a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a> *callback, const <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_force_field">NvFlexExtForceField</a> *forceFields, int numForceFields)</td></tr> +<tr class="separator:aa36d43b9e53b9b66d43c2bc5eb5abf98"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> +<div class="textblock"><p>The main include file for the Flex extensions API, this is a collection of helper functions for asset creation, scene management, and sample code that builds on the Flex core API. </p> +</div><hr/><h2 class="groupheader">Data Structure Documentation</h2> +<a name="struct_nv_flex_ext_moving_frame" id="struct_nv_flex_ext_moving_frame"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">struct NvFlexExtMovingFrame</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"><p>Helper struct for storing the state of a moving frame, see <a class="el" href="_nv_flex_ext_8h.html#a6a20d814e3b083b069daa0f20a3e756e">NvFlexExtMovingFrameInit()</a> </p> +</div><table class="fieldtable"> +<tr><th colspan="3">Data Fields</th></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a7d35ea2def3a05a5f85a5cdfd5abdc56"></a>float</td> +<td class="fieldname"> +position[3]</td> +<td class="fielddoc"> +</td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ad1af111e19f7ca92fd913c25c4d9288b"></a>float</td> +<td class="fieldname"> +rotation[4]</td> +<td class="fielddoc"> +</td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="acc246770a0f65f1e50b43c618955dc84"></a>float</td> +<td class="fieldname"> +velocity[3]</td> +<td class="fielddoc"> +</td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a95fbd8d303fe90992b95b63a29eb5344"></a>float</td> +<td class="fieldname"> +omega[3]</td> +<td class="fielddoc"> +</td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a0705c9d2b5960057b37f097083d96f33"></a>float</td> +<td class="fieldname"> +acceleration[3]</td> +<td class="fielddoc"> +</td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="aab0ea63bac05cd6aee5054d369687fb0"></a>float</td> +<td class="fieldname"> +tau[3]</td> +<td class="fielddoc"> +</td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ae03f4690a66ba4e06e4b2519c688aaba"></a>float</td> +<td class="fieldname"> +delta[4][4]</td> +<td class="fielddoc"> +</td></tr> +</table> + +</div> +</div> +<a name="struct_nv_flex_ext_asset" id="struct_nv_flex_ext_asset"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">struct NvFlexExtAsset</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"><p>Represents a group of particles and constraints, each asset can be instanced into a container using <a class="el" href="_nv_flex_ext_8h.html#a3bf10e2c9370602142b7be01e920f973">NvFlexExtCreateInstance()</a> </p> +</div><table class="fieldtable"> +<tr><th colspan="3">Data Fields</th></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a0ac3c8cc1bb87eaa50690f44e56a74da"></a>float *</td> +<td class="fieldname"> +particles</td> +<td class="fielddoc"> +Local space particle positions, x,y,z,1/mass. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a4eceb2845977219379afdd06397a6706"></a>int</td> +<td class="fieldname"> +numParticles</td> +<td class="fielddoc"> +Number of particles. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ab421c4d72574f468af6827c18c36a387"></a>int</td> +<td class="fieldname"> +maxParticles</td> +<td class="fielddoc"> +Maximum number of particles, allows extra space for tearable assets which duplicate particles. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a8b7a9bd9cbd2f33c6b3da02687a6bd9d"></a>int *</td> +<td class="fieldname"> +springIndices</td> +<td class="fielddoc"> +Spring indices. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a1e8252d5e5f66b3d8920c1371f23cc05"></a>float *</td> +<td class="fieldname"> +springCoefficients</td> +<td class="fielddoc"> +Spring coefficients. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a9020959583f85486e060a7b5e611476d"></a>float *</td> +<td class="fieldname"> +springRestLengths</td> +<td class="fielddoc"> +Spring rest-lengths. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ae5f81891f59382b133319dc3bcea8ba0"></a>int</td> +<td class="fieldname"> +numSprings</td> +<td class="fielddoc"> +Number of springs. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a8a4a122a0a95b8262fc4673298a5cb1c"></a>int *</td> +<td class="fieldname"> +shapeIndices</td> +<td class="fielddoc"> +The indices of the shape matching constraints. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a4810f46c27fd0cfacfb1f4be9dff0479"></a>int</td> +<td class="fieldname"> +numShapeIndices</td> +<td class="fielddoc"> +Total number of indices for shape constraints. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a96b73b81c5db272d950efe3f03a8cef8"></a>int *</td> +<td class="fieldname"> +shapeOffsets</td> +<td class="fielddoc"> +Each entry stores the end of the shape's indices in the indices array (exclusive prefix sum of shape lengths) </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a0fd9407aad5001d3a9fe90e989da1aad"></a>float *</td> +<td class="fieldname"> +shapeCoefficients</td> +<td class="fielddoc"> +The stiffness coefficient for each shape. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a24866c3fe2c482073325062c9c80d043"></a>float *</td> +<td class="fieldname"> +shapeCenters</td> +<td class="fielddoc"> +The position of the center of mass of each shape, an array of vec3s mNumShapes in length. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="afc07cf2edbf4d5bf504890b312a98bd7"></a>int</td> +<td class="fieldname"> +numShapes</td> +<td class="fielddoc"> +The number of shape matching constraints. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="aeee311155e99ce95c506078964a7dc3c"></a>int *</td> +<td class="fieldname"> +triangleIndices</td> +<td class="fielddoc"> +Indexed triangle mesh indices for clothing. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ad858d4df98a4300668f2b8048881c0d5"></a>int</td> +<td class="fieldname"> +numTriangles</td> +<td class="fielddoc"> +Number of triangles. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a960073478e49b229d1d19ac64c5b23f7"></a>bool</td> +<td class="fieldname"> +inflatable</td> +<td class="fielddoc"> +Whether an inflatable constraint should be added. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a3fc55581814cbab90a0c4167428893df"></a>float</td> +<td class="fieldname"> +inflatableVolume</td> +<td class="fielddoc"> +The rest volume for the inflatable constraint. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ab556b9c29acfda73e14c68edc43be7e3"></a>float</td> +<td class="fieldname"> +inflatablePressure</td> +<td class="fielddoc"> +How much over the rest volume the inflatable should attempt to maintain. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ad4d5551b97bd31b9e1ca5c57f2c82452"></a>float</td> +<td class="fieldname"> +inflatableStiffness</td> +<td class="fielddoc"> +How stiff the inflatable is. </td></tr> +</table> + +</div> +</div> +<a name="struct_nv_flex_ext_instance" id="struct_nv_flex_ext_instance"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">struct NvFlexExtInstance</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"><p>Represents an instance of a FlexAsset in a container </p> +</div><table class="fieldtable"> +<tr><th colspan="3">Data Fields</th></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a1a0c7a0c03148b1586c4fb48f14a565f"></a>int *</td> +<td class="fieldname"> +particleIndices</td> +<td class="fielddoc"> +Simulation particle indices. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="aca9a5ecc1fd26fedf90f8f17e87e3ca8"></a>int</td> +<td class="fieldname"> +numParticles</td> +<td class="fielddoc"> +Number of simulation particles. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a3288fee0b909e9e768d9abc9b8da74cf"></a>int</td> +<td class="fieldname"> +triangleIndex</td> +<td class="fielddoc"> +Index in the container's triangle array. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="aa67489d3beb86e2b566e0fa2e978ed11"></a>int</td> +<td class="fieldname"> +shapeIndex</td> +<td class="fielddoc"> +Index in the container's shape body constraints array. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ac2ef832cadd91e257ba80eb97d936340"></a>int</td> +<td class="fieldname"> +inflatableIndex</td> +<td class="fielddoc"> +Index in the container's inflatables array. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="aa6fb48cb1199af96a29de7616f7a4d18"></a>float *</td> +<td class="fieldname"> +shapeTranslations</td> +<td class="fielddoc"> +Shape matching group translations (vec3s) </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a3d0a712689ce07a5652d48ea25fa05b9"></a>float *</td> +<td class="fieldname"> +shapeRotations</td> +<td class="fielddoc"> +Shape matching group rotations (quaternions) </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="aa4f19c17fa4ae35ceda90c8b3d1fcca4"></a>const <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> *</td> +<td class="fieldname"> +asset</td> +<td class="fielddoc"> +Source asset used to create this instance. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a8000e722ce864bbfbce0f303f39186d7"></a>void *</td> +<td class="fieldname"> +userData</td> +<td class="fielddoc"> +User data pointer. </td></tr> +</table> + +</div> +</div> +<a name="struct_nv_flex_ext_tearing_particle_clone" id="struct_nv_flex_ext_tearing_particle_clone"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">struct NvFlexExtTearingParticleClone</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"><p>Particles and vertices may need to be copied during tearing. Because the user may maintain particle data outside of Flex, this structure describes how to update the particle data. The application should copy each existing particle given by srcIndex (in the asset's particle array) to the destIndex (also in the asset's array). </p> +</div><table class="fieldtable"> +<tr><th colspan="3">Data Fields</th></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a431c97a2756c45752dd7508f0810a397"></a>int</td> +<td class="fieldname"> +srcIndex</td> +<td class="fielddoc"> +</td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a9034efff0f1b158a12a9ed6991d620fa"></a>int</td> +<td class="fieldname"> +destIndex</td> +<td class="fielddoc"> +</td></tr> +</table> + +</div> +</div> +<a name="struct_nv_flex_ext_tearing_mesh_edit" id="struct_nv_flex_ext_tearing_mesh_edit"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">struct NvFlexExtTearingMeshEdit</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"><p>The mesh topology may need to be updated to reference new particles during tearing. Because the user may maintain mesh topology outside of Flex, this structure describes the necessary updates that should be performed on the mesh. The triIndex member is the index of the index to be updated, e.g.: a triIndex value of 4 refers to the index 1 vertex (4%3) of the index 1 triangle (4/3). This entry in the indices array should be updated to point to the newParticleIndex. </p> +</div><table class="fieldtable"> +<tr><th colspan="3">Data Fields</th></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a46b80c02097ebc40bf777708e8f17ed4"></a>int</td> +<td class="fieldname"> +triIndex</td> +<td class="fielddoc"> +</td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a8cf124de0fc370757cb890f83984ced8"></a>int</td> +<td class="fieldname"> +newParticleIndex</td> +<td class="fielddoc"> +</td></tr> +</table> + +</div> +</div> +<a name="struct_nv_flex_ext_particle_data" id="struct_nv_flex_ext_particle_data"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">struct NvFlexExtParticleData</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"></div><table class="fieldtable"> +<tr><th colspan="3">Data Fields</th></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a780c0bac62cc5dd8d04da11cff07eeba"></a>float *</td> +<td class="fieldname"> +particles</td> +<td class="fielddoc"> +Receives a pointer to the particle position / mass data. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a69962fe23c7fef594fb5f36a175ff148"></a>float *</td> +<td class="fieldname"> +restParticles</td> +<td class="fielddoc"> +Receives a pointer to the particle's rest position (used for self collision culling) </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="adbb39b1f8b0705bb3e19d2cb6145640f"></a>float *</td> +<td class="fieldname"> +velocities</td> +<td class="fielddoc"> +Receives a pointer to the particle velocity data. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a7fa35a822a4e856fee45b3263e679270"></a>int *</td> +<td class="fieldname"> +phases</td> +<td class="fielddoc"> +Receives a pointer to the particle phase data. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="afcacbd584e2041855af50eae3f287779"></a>float *</td> +<td class="fieldname"> +normals</td> +<td class="fielddoc"> +Receives a pointer to the particle normal data with 16 byte stride in format [nx, ny, nz, nw]. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="af911b47ddb538a0542f6e2c38a82d701"></a>const float *</td> +<td class="fieldname"> +lower</td> +<td class="fielddoc"> +Receive a pointer to the particle lower bounds [x, y, z]. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="ad722c319fe60d8a0933df217ba04b2ac"></a>const float *</td> +<td class="fieldname"> +upper</td> +<td class="fielddoc"> +Receive a pointer to the particle upper bounds [x, y, z]. </td></tr> +</table> + +</div> +</div> +<a name="struct_nv_flex_ext_triangle_data" id="struct_nv_flex_ext_triangle_data"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">struct NvFlexExtTriangleData</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"></div><table class="fieldtable"> +<tr><th colspan="3">Data Fields</th></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a806a707d6b32c41ab561a4893f43ddde"></a>int *</td> +<td class="fieldname"> +indices</td> +<td class="fielddoc"> +Receives a pointer to the array of triangle index data. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a56bf3b1fe603c79b871ead2efb65cc78"></a>float *</td> +<td class="fieldname"> +normals</td> +<td class="fielddoc"> +Receives a pointer to an array of triangle normal data stored with 16 byte stride, i.e.: [nx, ny, nz]. </td></tr> +</table> + +</div> +</div> +<a name="struct_nv_flex_ext_shape_data" id="struct_nv_flex_ext_shape_data"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">struct NvFlexExtShapeData</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"></div><table class="fieldtable"> +<tr><th colspan="3">Data Fields</th></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a6517fee9c5e151673ecd5ad91cbf2ae2"></a>float *</td> +<td class="fieldname"> +rotations</td> +<td class="fielddoc"> +Receives a pointer to the array quaternion rotation data in [x, y z, w] format. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="acd73f347463a114da73bb1ab5eff00b4"></a>float *</td> +<td class="fieldname"> +positions</td> +<td class="fielddoc"> +Receives a pointer to an array of shape body translations in [x, y, z] format. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a4e845f47484e00a272ad351b4bf28e95"></a>int</td> +<td class="fieldname"> +n</td> +<td class="fielddoc"> +Number of valid tranforms. </td></tr> +</table> + +</div> +</div> +<a name="struct_nv_flex_ext_force_field" id="struct_nv_flex_ext_force_field"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">struct NvFlexExtForceField</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"><p>Force field data, currently just supports radial fields </p> +</div><table class="fieldtable"> +<tr><th colspan="3">Data Fields</th></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a9e6134ffeca22636dcd467fa4dee1ba0"></a>float</td> +<td class="fieldname"> +mPosition[3]</td> +<td class="fielddoc"> +Center of force field. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a7ad225a762dcf91b7155c7229dd08d38"></a>float</td> +<td class="fieldname"> +mRadius</td> +<td class="fielddoc"> +Radius of the force field. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a0b9729f9896faba45c861a1e8d15290b"></a>float</td> +<td class="fieldname"> +mStrength</td> +<td class="fielddoc"> +Strength of the force field. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a3d7dba5a4d9fce7230bc20a8bb567951"></a><a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68e">NvFlexExtForceMode</a></td> +<td class="fieldname"> +mMode</td> +<td class="fielddoc"> +Mode of field application. </td></tr> +<tr><td class="fieldtype"> +<a class="anchor" id="a785f5a041fb93cf460cde7153f87fa02"></a>bool</td> +<td class="fieldname"> +mLinearFalloff</td> +<td class="fielddoc"> +Linear or no falloff. </td></tr> +</table> + +</div> +</div> +<h2 class="groupheader">Typedef Documentation</h2> +<a class="anchor" id="afaf84632a42346a718009bcda5efc8b4"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">typedef struct <a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> <a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Opaque type representing a simulation </p> + +</div> +</div> +<a class="anchor" id="a1117ce527b6b483cc756ab5352f6dc3f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">typedef struct <a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a> <a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Opaque type representing a force field callback structure that ecapsulates the force field kernels and associated data applied as a callback during the Flex update </p> + +</div> +</div> +<h2 class="groupheader">Enumeration Type Documentation</h2> +<a class="anchor" id="a502acd5c1db4ba6eef61eba25f26d68e"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68e">NvFlexExtForceMode</a></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Controls the way that force fields affect particles </p> +<table class="fieldtable"> +<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a502acd5c1db4ba6eef61eba25f26d68ea9d4e8413b628837f9d1982897fd1f4a2"></a>eNvFlexExtModeForce </td><td class="fielddoc"> +<p>Apply field value as a force. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a502acd5c1db4ba6eef61eba25f26d68ea92265f22fc2a724baf640fdace8f8ea0"></a>eNvFlexExtModeImpulse </td><td class="fielddoc"> +<p>Apply field value as an impulse. </p> +</td></tr> +<tr><td class="fieldname"><a class="anchor" id="a502acd5c1db4ba6eef61eba25f26d68ea6a2e4817b1e86764147c81e8d5e5070c"></a>eNvFlexExtModeVelocityChange </td><td class="fielddoc"> +<p>Apply field value as a velocity change. </p> +</td></tr> +</table> + +</div> +</div> +<h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="a6a20d814e3b083b069daa0f20a3e756e"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexExtMovingFrameInit </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a> * </td> + <td class="paramname"><em>frame</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const float * </td> + <td class="paramname"><em>worldTranslation</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const float * </td> + <td class="paramname"><em>worldRotation</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Creates a new moving frame struct. This helper method is used to calculate inertial forces for particles inside an attached parent frame. For example, when simulating cloth attached to the character, we would like to perform a local space simulation of the cloth to avoid excessive stretching and collision issues during fast animations. However, we would still like the cloth to respond to character movements in at least a limited, or controlled fashion. The <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a> provides a way to include or remove these inertial forces. The basic usage is as follows:</p> +<div class="fragment"><div class="line"><a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a> frame;</div> +<div class="line"><a class="code" href="_nv_flex_ext_8h.html#a6a20d814e3b083b069daa0f20a3e756e">NvFlexExtMovingFrameInit</a>(&frame, initialTranslation, initialRotation);</div> +<div class="line"></div> +<div class="line"><span class="keyword">const</span> linearInertiaScale = 0.25f;</div> +<div class="line"><span class="keyword">const</span> angularInertiaScale 0.5;</div> +<div class="line"></div> +<div class="line"><span class="keywordflow">while</span>(simulating)</div> +<div class="line">{</div> +<div class="line"> float3 newPosition;</div> +<div class="line"> float4 newRotation;</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// move parent frame (character / emitter) according to application's animation system</span></div> +<div class="line"> Animate(newPosition, newRotation);</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// update the frame</span></div> +<div class="line"> <a class="code" href="_nv_flex_ext_8h.html#a780022c1b8425074ce08328e8e8c35cc">NvFlexExtMovingFrameUpdate</a>(frame, newPosition, newRotation, dt);</div> +<div class="line"></div> +<div class="line"> <span class="comment">// apply inertial forces and update particles</span></div> +<div class="line"> <a class="code" href="_nv_flex_ext_8h.html#a4ffe9bcd59a6cfc8900ac136f5123304">NvFlexExtMovingFrameApply</a>(frame, particlePositions, particleVelocities, numParticles, linearInertiaScale, angularInertiaScale, dt);</div> +<div class="line">}</div> +</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">frame</td><td>A pointer to a user-allocated <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a> struct </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">worldTranslation</td><td>A pointer to a vec3 storing the frame's initial translation in world space </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">worldRotation</td><td>A pointer to a quaternion storing the frame's initial rotation in world space </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a780022c1b8425074ce08328e8e8c35cc"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexExtMovingFrameUpdate </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a> * </td> + <td class="paramname"><em>frame</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const float * </td> + <td class="paramname"><em>worldTranslation</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const float * </td> + <td class="paramname"><em>worldRotation</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>dt</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a4ffe9bcd59a6cfc8900ac136f5123304"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexExtMovingFrameApply </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a> * </td> + <td class="paramname"><em>frame</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float * </td> + <td class="paramname"><em>positions</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float * </td> + <td class="paramname"><em>velocities</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numParticles</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>linearScale</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>angularScale</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>dt</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a82a15dfd40b338a07cf4517f55f16720"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API int NvFlexExtCreateWeldedMeshIndices </td> + <td>(</td> + <td class="paramtype">const float * </td> + <td class="paramname"><em>vertices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numVertices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int * </td> + <td class="paramname"><em>uniqueVerts</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int * </td> + <td class="paramname"><em>originalToUniqueMap</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>threshold</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Create an index buffer of unique vertices in the mesh (collapses vertices in the same position even if they have different normals / texcoords). This can be used to create simulation meshes from render meshes, and is typically done as a pre-pass before calling <a class="el" href="_nv_flex_ext_8h.html#a8bef033b2a8567dfcc954e22534147ee">NvFlexExtCreateClothFromMesh()</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">vertices</td><td>A pointer to an array of float3 positions </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numVertices</td><td>The number of vertices in the mesh </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">uniqueVerts</td><td>A list of unique mesh vertex indices, should be numVertices in length (worst case all verts are unique) </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">originalToUniqueMap</td><td>Mapping from the original vertex index to the unique vertex index, should be numVertices in length </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">threshold</td><td>The distance below which two vertices are considered duplicates </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>The number of unique vertices in the mesh </dd></dl> + +</div> +</div> +<a class="anchor" id="a8bef033b2a8567dfcc954e22534147ee"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* NvFlexExtCreateClothFromMesh </td> + <td>(</td> + <td class="paramtype">const float * </td> + <td class="paramname"><em>particles</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numParticles</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const int * </td> + <td class="paramname"><em>indices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numTriangles</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>stretchStiffness</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>bendStiffness</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>tetherStiffness</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>tetherGive</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>pressure</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Create a cloth asset consisting of stretch and bend distance constraints given an indexed triangle mesh. Stretch constraints will be placed along triangle edges, while bending constraints are placed over two edges.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">particles</td><td>Positions and masses of the particles in the format [x, y, z, 1/m] </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numParticles</td><td>The number of particles </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>The triangle indices, these should be 'welded' using <a class="el" href="_nv_flex_ext_8h.html#a82a15dfd40b338a07cf4517f55f16720">NvFlexExtCreateWeldedMeshIndices()</a> first </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numTriangles</td><td>The number of triangles </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">stretchStiffness</td><td>The stiffness coefficient for stretch constraints </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">bendStiffness</td><td>The stiffness coefficient used for bending constraints </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">tetherStiffness</td><td>If > 0.0f then the function will create tethers attached to particles with zero inverse mass. These are unilateral, long-range attachments, which can greatly reduce stretching even at low iteration counts. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">tetherGive</td><td>Because tether constraints are so effective at reducing stiffness, it can be useful to allow a small amount of extension before the constraint activates. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">pressure</td><td>If > 0.0f then a volume (pressure) constraint will also be added to the asset, the rest volume and stiffness will be automatically computed by this function </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>A pointer to an asset structure holding the particles and constraints </dd></dl> + +</div> +</div> +<a class="anchor" id="addad82b3598059ffde7b3b5babe17bd4"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* NvFlexExtCreateTearingClothFromMesh </td> + <td>(</td> + <td class="paramtype">const float * </td> + <td class="paramname"><em>particles</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numParticles</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>maxParticles</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const int * </td> + <td class="paramname"><em>indices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numTriangles</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>stretchStiffness</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>bendStiffness</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>pressure</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Create a cloth asset consisting of stretch and bend distance constraints given an indexed triangle mesh. This creates an asset with the same structure as <a class="el" href="_nv_flex_ext_8h.html#a8bef033b2a8567dfcc954e22534147ee">NvFlexExtCreateClothFromMesh()</a>, however tether constraints are not supported, and additional information regarding mesh topology will be stored with the asset to allow tearing.</p> +<dl class="section note"><dt>Note</dt><dd>: Typically each instance of a tearable cloth mesh will have it's own asset. This is because the asset holds the topology of the mesh which is unique for each instance.</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">particles</td><td>Positions and masses of the particles in the format [x, y, z, 1/m] </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numParticles</td><td>The number of particles </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">maxParticles</td><td>The maximum number of particles for this asset, this will limit the amount of tearing that can be performed. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>The triangle indices, these should be 'welded' using <a class="el" href="_nv_flex_ext_8h.html#a82a15dfd40b338a07cf4517f55f16720">NvFlexExtCreateWeldedMeshIndices()</a> first </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numTriangles</td><td>The number of triangles </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">stretchStiffness</td><td>The stiffness coefficient for stretch constraints </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">bendStiffness</td><td>The stiffness coefficient used for bending constraints </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">pressure</td><td>If > 0.0f then a volume (pressure) constraint will also be added to the asset, the rest volume and stiffness will be automatically computed by this function </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>A pointer to an asset structure holding the particles and constraints </dd></dl> + +</div> +</div> +<a class="anchor" id="a88054283907d3386f1a30cdc4475acb0"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexExtDestroyTearingCloth </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> * </td> + <td class="paramname"><em>asset</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Destroy an asset created with <a class="el" href="_nv_flex_ext_8h.html#addad82b3598059ffde7b3b5babe17bd4">NvFlexExtCreateTearingClothFromMesh()</a> </p><dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">asset</td><td>The asset to be destroyed. </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a5efc0113d5432eb959437e6e3a98cc5f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexExtTearClothMesh </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> * </td> + <td class="paramname"><em>asset</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>maxStrain</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>maxSplits</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_particle_clone">NvFlexExtTearingParticleClone</a> * </td> + <td class="paramname"><em>particleCopies</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int * </td> + <td class="paramname"><em>numParticleCopies</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>maxCopies</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_mesh_edit">NvFlexExtTearingMeshEdit</a> * </td> + <td class="paramname"><em>triangleEdits</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int * </td> + <td class="paramname"><em>numTriangleEdits</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>maxEdits</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Perform cloth mesh tearing, this function will calculate the strain on each distance constraint and perform splits if it is above a certain strain threshold (i.e.: length/restLength > maxStrain).</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">asset</td><td>The asset describing the cloth constraint network, this must be created with <a class="el" href="_nv_flex_ext_8h.html#addad82b3598059ffde7b3b5babe17bd4">NvFlexExtCreateTearingClothFromMesh()</a> </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">maxStrain</td><td>The maximum allowable strain on each edge </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">maxSplits</td><td>The maximum number of constraint breaks that will be performed, this controls the 'rate' of mesh tearing </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">particleCopies</td><td>Pointer to an array of <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_particle_clone">NvFlexExtTearingParticleClone</a> structures that describe the particle copies that need to be performed </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numParticleCopies</td><td>Pointer to an integer that will have the number of copies performed written to it </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">maxCopies</td><td>The maximum number of particle copies that will be performed, multiple particles copies may be performed in response to one split </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">triangleEdits</td><td>Pointer to an array of <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_mesh_edit">NvFlexExtTearingMeshEdit</a> structures that describe the topology updates that need to be performed </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numTriangleEdits</td><td>Pointer to an integer that will have the number of topology updates written to it </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">maxEdits</td><td>The maximum number of index buffer edits that will be output </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ad0a9c7e2f907e46b60f6bacf402987ce"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* NvFlexExtCreateRigidFromMesh </td> + <td>(</td> + <td class="paramtype">const float * </td> + <td class="paramname"><em>vertices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numVertices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const int * </td> + <td class="paramname"><em>indices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numTriangleIndices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>radius</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>expand</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Create a shape body asset from a closed triangle mesh. The mesh is first voxelized at a spacing specified by the radius, and particles are placed at occupied voxels.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">vertices</td><td>Vertices of the triangle mesh </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numVertices</td><td>The number of vertices </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>The triangle indices </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numTriangleIndices</td><td>The number of triangles indices (triangles*3) </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">radius</td><td>The spacing used for voxelization, note that the number of voxels grows proportional to the inverse cube of radius, currently this method limits construction to resolutions < 64^3 </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">expand</td><td>Particles will be moved inwards (if negative) or outwards (if positive) from the surface of the mesh according to this factor </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>A pointer to an asset structure holding the particles and constraints </dd></dl> + +</div> +</div> +<a class="anchor" id="a9f2c0daf521df4920e44cca1cb30b42c"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* NvFlexExtCreateSoftFromMesh </td> + <td>(</td> + <td class="paramtype">const float * </td> + <td class="paramname"><em>vertices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numVertices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const int * </td> + <td class="paramname"><em>indices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numTriangleIndices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>particleSpacing</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>volumeSampling</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>surfaceSampling</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>clusterSpacing</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>clusterRadius</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>clusterStiffness</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>linkRadius</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>linkStiffness</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>globalStiffness</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Create a shape body asset from a closed triangle mesh. The mesh is first voxelized at a spacing specified by the radius, and particles are placed at occupied voxels.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">vertices</td><td>Vertices of the triangle mesh </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numVertices</td><td>The number of vertices </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>The triangle indices </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numTriangleIndices</td><td>The number of triangles indices (triangles*3) </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">particleSpacing</td><td>The spacing to use when creating particles </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">volumeSampling</td><td>Control the resolution the mesh is voxelized at in order to generate interior sampling, if the mesh is not closed then this should be set to zero and surface sampling should be used instead </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">surfaceSampling</td><td>Controls how many samples are taken of the mesh surface, this is useful to ensure fine features of the mesh are represented by particles, or if the mesh is not closed </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">clusterSpacing</td><td>The spacing for shape-matching clusters, should be at least the particle spacing </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">clusterRadius</td><td>Controls the overall size of the clusters, this controls how much overlap the clusters have which affects how smooth the final deformation is, if parts of the body are detaching then it means the clusters are not overlapping sufficiently to form a fully connected set of clusters </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">clusterStiffness</td><td>Controls the stiffness of the resulting clusters </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">linkRadius</td><td>Any particles below this distance will have additional distance constraints created between them </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">linkStiffness</td><td>The stiffness of distance links </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">globalStiffness</td><td>If this parameter is > 0.0f, adds an additional global cluster that consists of all particles in the shape. The stiffness of this cluster is the globalStiffness. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>A pointer to an asset structure holding the particles and constraints </dd></dl> + +</div> +</div> +<a class="anchor" id="a36c33fafe13c5fd5773bf9a2af2dd745"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexExtDestroyAsset </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> * </td> + <td class="paramname"><em>asset</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Frees all memory associated with an asset created by one of the creation methods param[in] asset The asset to destroy. </p> + +</div> +</div> +<a class="anchor" id="a6e3f12e9e92abb31b115cf31b33e34bb"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexExtCreateSoftMeshSkinning </td> + <td>(</td> + <td class="paramtype">const float * </td> + <td class="paramname"><em>vertices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numVertices</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const float * </td> + <td class="paramname"><em>bones</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numBones</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>falloff</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>maxDistance</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float * </td> + <td class="paramname"><em>skinningWeights</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int * </td> + <td class="paramname"><em>skinningIndices</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Creates information for linear blend skining a graphics mesh to a set of transforms (bones)</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">vertices</td><td>Vertices of the triangle mesh </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numVertices</td><td>The number of vertices </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">bones</td><td>Pointer to an array of vec3 positions representing the bone positions </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numBones</td><td>Then number of bones </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">falloff</td><td>The speed at which the bone's influence on a vertex falls off with distance </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">maxDistance</td><td>The maximum distance a bone can be from a vertex before it will not influence it any more </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">skinningWeights</td><td>The normalized weights for each bone, there are up to 4 weights per-vertex so this should be numVertices*4 in length </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">skinningIndices</td><td>The indices of each bone corresponding to the skinning weight, will be -1 if this weight is not used </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a49906c9e3466d40383cddf627fe26658"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* NvFlexExtCreateContainer </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>lib</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>maxParticles</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Creates a wrapper object around a Flex solver that can hold assets / instances, the container manages sending and retrieving partical data from the solver</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>The solver to wrap </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">maxParticles</td><td>The maximum number of particles to manage </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>A pointer to the new container </dd></dl> + +</div> +</div> +<a class="anchor" id="a2509137d9fb8ab6818f35ab7761da7a5"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexExtDestroyContainer </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> * </td> + <td class="paramname"><em>container</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Frees all memory associated with a container</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">container</td><td>The container to destroy </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a7c036ccca83df3659529858068e0593d"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API int NvFlexExtAllocParticles </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> * </td> + <td class="paramname"><em>container</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>n</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int * </td> + <td class="paramname"><em>indices</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Allocates particles in the container.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">container</td><td>The container to allocate out of </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of particles to allocate </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">indices</td><td>An n-length array of ints that will store the indices to the allocated particles </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ab0a259d159116b7fba9b229784b02c70"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexExtFreeParticles </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> * </td> + <td class="paramname"><em>container</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>n</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const int * </td> + <td class="paramname"><em>indices</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Free allocated particles</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">container</td><td>The container to free from </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of particles to free </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>The indices of the particles to free </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a7fc268a27306f6fc68dd1c106cfa62db"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API int NvFlexExtGetActiveList </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> * </td> + <td class="paramname"><em>container</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int * </td> + <td class="paramname"><em>indices</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Retrives the indices of all active particles</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">container</td><td>The container to free from </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">indices</td><td>Returns the number of active particles </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>The number of active particles </dd></dl> + +</div> +</div> +<a class="anchor" id="a3fa8bd4b7d4096602e611faf0bb62dfb"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_particle_data">NvFlexExtParticleData</a> NvFlexExtMapParticleData </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> * </td> + <td class="paramname"><em>container</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Returns pointers to the internal data stored by the container. These are host-memory pointers, and will remain valid <a class="el" href="_nv_flex_ext_8h.html#af0cd639c21be28640fe5e1dd94931d59">NvFlexExtUnmapParticleData()</a> is called.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">container</td><td>The container whose data should be accessed </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="af0cd639c21be28640fe5e1dd94931d59"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexExtUnmapParticleData </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> * </td> + <td class="paramname"><em>container</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a1646bf409084777cd0ff5d4fcccf07de"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_triangle_data">NvFlexExtTriangleData</a> NvFlexExtMapTriangleData </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> * </td> + <td class="paramname"><em>container</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Access triangle constraint data, see NvFlexExtGetParticleData() for notes on ownership.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">container</td><td>The container to retrive from </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a89e582ae93e0256b06f22d9abf361783"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexExtUnmapTriangleData </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> * </td> + <td class="paramname"><em>container</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Unmap triangle data, see <a class="el" href="_nv_flex_ext_8h.html#a1646bf409084777cd0ff5d4fcccf07de">NvFlexExtMapTriangleData()</a> </p> + +</div> +</div> +<a class="anchor" id="a90f2d3ba5be20e70e7efead911ee7acc"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_shape_data">NvFlexExtShapeData</a> NvFlexExtMapShapeData </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> * </td> + <td class="paramname"><em>container</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Access shape body constraint data, see NvFlexExtGetParticleData() for notes on ownership.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">container</td><td>The container to retrive from </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ab51f04114586b5bf0f6fc5816fda9c69"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexExtUnmapShapeData </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> * </td> + <td class="paramname"><em>container</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Unmap shape transform data, see <a class="el" href="_nv_flex_ext_8h.html#a90f2d3ba5be20e70e7efead911ee7acc">NvFlexExtMapShapeData()</a> </p> + +</div> +</div> +<a class="anchor" id="a3bf10e2c9370602142b7be01e920f973"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_instance">NvFlexExtInstance</a>* NvFlexExtCreateInstance </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> * </td> + <td class="paramname"><em>container</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_particle_data">NvFlexExtParticleData</a> * </td> + <td class="paramname"><em>particleData</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> * </td> + <td class="paramname"><em>asset</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const float * </td> + <td class="paramname"><em>transform</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>vx</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>vy</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>vz</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>phase</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>invMassScale</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Creates an instance of an asset, the container will internally store a reference to the asset so it should remain valid for the instance lifetime. This method will allocate particles for the asset, assign their initial positions, velocity and phase.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">container</td><td>The container to spawn into </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">particleData</td><td>Pointer to a mapped particle data struct, returned from <a class="el" href="_nv_flex_ext_8h.html#a3fa8bd4b7d4096602e611faf0bb62dfb">NvFlexExtMapParticleData()</a> </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">asset</td><td>The asset to be spawned </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">transform</td><td>A pointer to a 4x4 column major, column vector transform that specifies the initial world space configuration of the particles </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">vx</td><td>The velocity of the particles along the x axis </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">vy</td><td>The velocity of the particles along the y axis </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">vz</td><td>The velocity of the particles along the z axis </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">phase</td><td>The phase used for the particles </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">invMassScale</td><td>A factor applied to the per particle inverse mass </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>A pointer to the instance of the asset </dd></dl> + +</div> +</div> +<a class="anchor" id="a2b5634f64bd0d8d86f894885a1c16a33"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexExtDestroyInstance </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> * </td> + <td class="paramname"><em>container</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_instance">NvFlexExtInstance</a> * </td> + <td class="paramname"><em>instance</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Destoy an instance of an asset</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">container</td><td>The container the instance belongs to </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">instance</td><td>The instance to destroy </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ad9343d07f49098ee205a1ed48dc9db34"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexExtNotifyAssetChanged </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> * </td> + <td class="paramname"><em>container</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> * </td> + <td class="paramname"><em>asset</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Notifies the container that asset data has changed and needs to be sent to the GPU this should be called if the constrains for an existing asset are modified by the user</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">container</td><td>The container the instance referencing the asset belongs to </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">asset</td><td>The asset which was modified (can be NULL) </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ab4caadf5a6b19674849bfce91d986e7b"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexExtTickContainer </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> * </td> + <td class="paramname"><em>container</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>dt</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numSubsteps</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">bool </td> + <td class="paramname"><em>enableTimers</em> = <code>false</code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Updates the container, applies force fields, steps the solver forward in time, updates the host with the results synchronously. This is a helper function which performs a synchronous update using the following flow.</p> +<div class="fragment"><div class="line"><span class="comment">// async update GPU data</span></div> +<div class="line"><a class="code" href="_nv_flex_ext_8h.html#a425f4e472bb83797498c904ab228209c">NvFlexExtPushToDevice</a>(container);</div> +<div class="line"></div> +<div class="line"><span class="comment">// update solver</span></div> +<div class="line"><a class="code" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver</a>(container, dt, iterations);</div> +<div class="line"></div> +<div class="line"><span class="comment">// async read data back to CPU</span></div> +<div class="line"><a class="code" href="_nv_flex_ext_8h.html#a89ea7bbd26bec46f1b82d84257de1f58">NvFlexExtPullFromDevice</a>(container);</div> +<div class="line"></div> +<div class="line"><span class="comment">// read / write particle data on CPU</span></div> +<div class="line"><a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_particle_data">NvFlexExtParticleData</a> data = <a class="code" href="_nv_flex_ext_8h.html#a3fa8bd4b7d4096602e611faf0bb62dfb">NvFlexExtMapParticleData</a>();</div> +<div class="line"></div> +<div class="line"><span class="comment">// CPU particle processing</span></div> +<div class="line">ProcessParticles(data);</div> +<div class="line"></div> +<div class="line"><span class="comment">// unmap data</span></div> +<div class="line"><a class="code" href="_nv_flex_ext_8h.html#af0cd639c21be28640fe5e1dd94931d59">NvFlexExtUnmapParticleData</a>();</div> +</div><!-- fragment --> <dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">container</td><td>The container to update </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">dt</td><td>The time-step in seconds </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numSubsteps</td><td>The number of substeps to perform </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">enableTimers</td><td>Whether to record detailed timers, see <a class="el" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver()</a> </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a425f4e472bb83797498c904ab228209c"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexExtPushToDevice </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> * </td> + <td class="paramname"><em>container</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Updates the device asynchronously, transfers any particle and constraint changes to the flex solver, expected to be called in the following sequence: NvFlexExtPushToDevice, NvFlexUpdateSolver, NvFlexExtPullFromDevice, flexSynchronize </p><dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">container</td><td>The container to update </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a89ea7bbd26bec46f1b82d84257de1f58"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexExtPullFromDevice </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> * </td> + <td class="paramname"><em>container</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Updates the host asynchronously, transfers particle and constraint data back to he host, expected to be called in the following sequence: NvFlexExtPushToDevice, NvFlexUpdateSolver, NvFlexExtPullFromDevice </p><dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">container</td><td>The container to update </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a4695d37db8b61495f200bfd88a2be628"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexExtUpdateInstances </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> * </td> + <td class="paramname"><em>container</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Synchronizes the per-instance data with the container's data, should be called after the synchronization with the solver read backs are complete</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">container</td><td>The instances belonging to this container will be updated </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ac1ed9ff49120d0691352399c8173bdcf"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a>* NvFlexExtCreateForceFieldCallback </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> * </td> + <td class="paramname"><em>solver</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Create a NvFlexExtForceFieldCallback structure, each callback is associated with the passed in solver once the <a class="el" href="_nv_flex_ext_8h.html#aa36d43b9e53b9b66d43c2bc5eb5abf98">NvFlexExtSetForceFields()</a> is called.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver created with <a class="el" href="_nv_flex_8h.html#af7f91fa47c779fcd8bee60061de6d31c">NvFlexCreateSolver()</a> </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>A pointer to a callback structure </dd></dl> + +</div> +</div> +<a class="anchor" id="ad08da77f432ca56bc59647bf73da86cb"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexExtDestroyForceFieldCallback </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a> * </td> + <td class="paramname"><em>callback</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Destroy the force field callback</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>A valid solver created with <a class="el" href="_nv_flex_ext_8h.html#ac1ed9ff49120d0691352399c8173bdcf">NvFlexExtCreateForceFieldCallback()</a> </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="aa36d43b9e53b9b66d43c2bc5eb5abf98"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">NV_FLEX_API void NvFlexExtSetForceFields </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a> * </td> + <td class="paramname"><em>callback</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_force_field">NvFlexExtForceField</a> * </td> + <td class="paramname"><em>forceFields</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>numForceFields</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Set force fields on the container, these will be applied during the Flex update</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The callback to update </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">forceFields</td><td>A pointer to an array of force field data, may be host or GPU memory </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">numForceFields</td><td>The number of force fields to send to the device </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Wed Feb 22 2017 12:18:22 for FLEX by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.9.1 +</small></address> +</body> +</html> diff --git a/doc/_static/api/_nv_flex_ext_8h_source.html b/doc/_static/api/_nv_flex_ext_8h_source.html new file mode 100644 index 0000000..d704ded --- /dev/null +++ b/doc/_static/api/_nv_flex_ext_8h_source.html @@ -0,0 +1,625 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.9.1"/> +<title>FLEX: NvFlexExt.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +<link href="flex.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">FLEX +  <span id="projectnumber">1.1.0</span> + </div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.9.1 --> +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">NvFlexExt.h</div> </div> +</div><!--header--> +<div class="contents"> +<a href="_nv_flex_ext_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// This code contains NVIDIA Confidential Information and is disclosed to you</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// under a form of NVIDIA software license agreement provided separately to you.</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">//</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// Notice</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// NVIDIA Corporation and its licensors retain all intellectual property and</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// proprietary rights in and to this software and related documentation and</span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// any modifications thereto. Any use, reproduction, disclosure, or</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distribution of this software and related documentation without an express</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// license agreement from NVIDIA Corporation is strictly prohibited.</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,</span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">//</span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// Information and code furnished is believed to be accurate and reliable.</span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// information or for any infringement of patents or other rights of third parties that may</span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// result from its use. No license is granted by implication or otherwise under any patent</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">// or patent rights of NVIDIA Corporation. Details are subject to change without notice.</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">// This code supersedes and replaces all information previously supplied.</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">// NVIDIA Corporation products are not authorized for use as critical</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">// components in life support devices or systems without express written approval of</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// NVIDIA Corporation.</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">//</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Copyright (c) 2013-2017 NVIDIA Corporation. All rights reserved.</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#ifndef NV_FLEX_EXT_H</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#define NV_FLEX_EXT_H</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="_nv_flex_8h.html">NvFlex.h</a>"</span></div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <cassert></span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include <cstddef></span></div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// A vector type that wraps a NvFlexBuffer, behaves like a standard vector for POD types (no construction)</span></div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// The vector must be mapped using map() before any read/write access to elements or resize operation</span></div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div> +<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html"> 45</a></span> <span class="keyword">struct </span><a class="code" href="struct_nv_flex_vector.html">NvFlexVector</a></div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div> +<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a9d7ff86aeebc0fcfa5c125d7872e2e3b"> 47</a></span>  <a class="code" href="struct_nv_flex_vector.html#a9d7ff86aeebc0fcfa5c125d7872e2e3b">NvFlexVector</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* l, <span class="keywordtype">int</span> <a class="code" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">size</a>=0) : <a class="code" href="struct_nv_flex_vector.html#ab08ce71766df91fc9201a61a48054d0c">lib</a>(l), <a class="code" href="struct_nv_flex_vector.html#aa408aa5327d07f69fc12314df2d5dcfb">buffer</a>(NULL), <a class="code" href="struct_nv_flex_vector.html#aa4422fcaa24d5bbd71aa7772639512b9">mappedPtr</a>(NULL), <a class="code" href="struct_nv_flex_vector.html#ad462ae46f0270161c79572762b558124">count</a>(0), <a class="code" href="struct_nv_flex_vector.html#ac28b5fd10fd519265c66cf4a0ce8e6ae">capacity</a>(0)</div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {</div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span> (<a class="code" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">size</a>)</div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  {</div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="struct_nv_flex_vector.html#a6c4a1f4acb4d6275c9e1ac01d4e35ab1">resize</a>(<a class="code" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">size</a>);</div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// resize implicitly maps, unmap initial allocation</span></div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="struct_nv_flex_vector.html#afca9914468beb61f6c98bc052e2af5e0">unmap</a>();</div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  } </div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  </div> +<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a026d8fcd71bb256610401cc861345428"> 58</a></span>  <a class="code" href="struct_nv_flex_vector.html#a026d8fcd71bb256610401cc861345428">NvFlexVector</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* l, <span class="keyword">const</span> T* ptr, <span class="keywordtype">int</span> <a class="code" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">size</a>) : <a class="code" href="struct_nv_flex_vector.html#ab08ce71766df91fc9201a61a48054d0c">lib</a>(l), <a class="code" href="struct_nv_flex_vector.html#aa408aa5327d07f69fc12314df2d5dcfb">buffer</a>(NULL), <a class="code" href="struct_nv_flex_vector.html#aa4422fcaa24d5bbd71aa7772639512b9">mappedPtr</a>(NULL), <a class="code" href="struct_nv_flex_vector.html#ad462ae46f0270161c79572762b558124">count</a>(0), <a class="code" href="struct_nv_flex_vector.html#ac28b5fd10fd519265c66cf4a0ce8e6ae">capacity</a>(0)</div> +<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="struct_nv_flex_vector.html#acd29b9b2b27e53e3640c24da6959e3cd">assign</a>(ptr, size);</div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="struct_nv_flex_vector.html#afca9914468beb61f6c98bc052e2af5e0">unmap</a>();</div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  }</div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  </div> +<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div> +<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#afb9c0f47544c0cdebe21efb6908dd3a0"> 65</a></span>  <a class="code" href="struct_nv_flex_vector.html#afb9c0f47544c0cdebe21efb6908dd3a0">~NvFlexVector</a>() </div> +<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  {</div> +<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="struct_nv_flex_vector.html#ade3c494ee6e75e54a6ba73d6bc100bd9">destroy</a>();</div> +<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div> +<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div> +<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#ab08ce71766df91fc9201a61a48054d0c"> 70</a></span>  <a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* <a class="code" href="struct_nv_flex_vector.html#ab08ce71766df91fc9201a61a48054d0c">lib</a>;</div> +<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#aa408aa5327d07f69fc12314df2d5dcfb"> 71</a></span>  <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* <a class="code" href="struct_nv_flex_vector.html#aa408aa5327d07f69fc12314df2d5dcfb">buffer</a>;</div> +<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div> +<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#aa4422fcaa24d5bbd71aa7772639512b9"> 73</a></span>  T* <a class="code" href="struct_nv_flex_vector.html#aa4422fcaa24d5bbd71aa7772639512b9">mappedPtr</a>;</div> +<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#ad462ae46f0270161c79572762b558124"> 74</a></span>  <span class="keywordtype">int</span> <a class="code" href="struct_nv_flex_vector.html#ad462ae46f0270161c79572762b558124">count</a>;</div> +<div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#ac28b5fd10fd519265c66cf4a0ce8e6ae"> 75</a></span>  <span class="keywordtype">int</span> <a class="code" href="struct_nv_flex_vector.html#ac28b5fd10fd519265c66cf4a0ce8e6ae">capacity</a>;</div> +<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div> +<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// reinitialize the vector leaving it unmapped</span></div> +<div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a0309d584abbe900d3af3823a79e89ee7"> 78</a></span>  <span class="keywordtype">void</span> <a class="code" href="struct_nv_flex_vector.html#a0309d584abbe900d3af3823a79e89ee7">init</a>(<span class="keywordtype">int</span> <a class="code" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">size</a>)</div> +<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  {</div> +<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="struct_nv_flex_vector.html#ade3c494ee6e75e54a6ba73d6bc100bd9">destroy</a>();</div> +<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="struct_nv_flex_vector.html#a6c4a1f4acb4d6275c9e1ac01d4e35ab1">resize</a>(size);</div> +<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="struct_nv_flex_vector.html#afca9914468beb61f6c98bc052e2af5e0">unmap</a>();</div> +<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div> +<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div> +<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#ade3c494ee6e75e54a6ba73d6bc100bd9"> 85</a></span>  <span class="keywordtype">void</span> <a class="code" href="struct_nv_flex_vector.html#ade3c494ee6e75e54a6ba73d6bc100bd9">destroy</a>()</div> +<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  { </div> +<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span> (mappedPtr)</div> +<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="_nv_flex_8h.html#a054cb27646a389ea257d1bbde46a6e97">NvFlexUnmap</a>(buffer);</div> +<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div> +<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">if</span> (buffer)</div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="_nv_flex_8h.html#ab559759820a4322aff061745ef26c867">NvFlexFreeBuffer</a>(buffer);</div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  mappedPtr = NULL;</div> +<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  buffer = NULL;</div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  capacity = 0; </div> +<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  count = 0;</div> +<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div> +<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div> +<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a56640fd10b06a4024a4bf01c306c436b"> 99</a></span>  <span class="keywordtype">void</span> <a class="code" href="struct_nv_flex_vector.html#a56640fd10b06a4024a4bf01c306c436b">map</a>(<span class="keywordtype">int</span> flags=<a class="code" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">eNvFlexMapWait</a>)</div> +<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  {</div> +<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span> (!buffer)</div> +<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span>;</div> +<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div> +<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  assert(!mappedPtr);</div> +<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  mappedPtr = (T*)<a class="code" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap</a>(buffer, flags);</div> +<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div> +<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  </div> +<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#afca9914468beb61f6c98bc052e2af5e0"> 108</a></span>  <span class="keywordtype">void</span> <a class="code" href="struct_nv_flex_vector.html#afca9914468beb61f6c98bc052e2af5e0">unmap</a>()</div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div> +<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span> (!buffer)</div> +<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">return</span>;</div> +<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div> +<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  assert(mappedPtr);</div> +<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div> +<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="_nv_flex_8h.html#a054cb27646a389ea257d1bbde46a6e97">NvFlexUnmap</a>(buffer);</div> +<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  mappedPtr = 0;</div> +<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div> +<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div> +<div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a3871fbd5422c9b3f41bd5dc2046e1aa7"> 119</a></span>  <span class="keyword">const</span> T& <a class="code" href="struct_nv_flex_vector.html#a3871fbd5422c9b3f41bd5dc2046e1aa7">operator[]</a>(<span class="keywordtype">int</span> index)<span class="keyword"> const</span></div> +<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="keyword"> </span>{ </div> +<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  assert(mappedPtr);</div> +<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  assert(index < count);</div> +<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div> +<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">return</span> mappedPtr[index];</div> +<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div> +<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div> +<div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a769d5ad0723a3fceac7951967e8b4d03"> 127</a></span>  T& <a class="code" href="struct_nv_flex_vector.html#a769d5ad0723a3fceac7951967e8b4d03">operator[]</a>(<span class="keywordtype">int</span> index)</div> +<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  {</div> +<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  assert(mappedPtr);</div> +<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  assert(index < count);</div> +<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div> +<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">return</span> mappedPtr[index];</div> +<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div> +<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div> +<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a98584303358b70fd12ead231cd750335"> 135</a></span>  <span class="keywordtype">void</span> <a class="code" href="struct_nv_flex_vector.html#a98584303358b70fd12ead231cd750335">push_back</a>(<span class="keyword">const</span> T& t)</div> +<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  {</div> +<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  assert(mappedPtr || !buffer);</div> +<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div> +<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="struct_nv_flex_vector.html#ae0e6ce694fb95a50c2974c6c2cc0ffc8">reserve</a>(count+1);</div> +<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div> +<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// copy element</span></div> +<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  mappedPtr[count++] = t; </div> +<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div> +<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div> +<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#acd29b9b2b27e53e3640c24da6959e3cd"> 145</a></span>  <span class="keywordtype">void</span> <a class="code" href="struct_nv_flex_vector.html#acd29b9b2b27e53e3640c24da6959e3cd">assign</a>(<span class="keyword">const</span> T* srcPtr, <span class="keywordtype">int</span> newCount)</div> +<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  {</div> +<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  assert(mappedPtr || !buffer);</div> +<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div> +<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="struct_nv_flex_vector.html#a6c4a1f4acb4d6275c9e1ac01d4e35ab1">resize</a>(newCount);</div> +<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div> +<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  memcpy(mappedPtr, srcPtr, newCount*<span class="keyword">sizeof</span>(T));</div> +<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div> +<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div> +<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a225da2c753ca0bb95b570c303f0cd761"> 154</a></span>  <span class="keywordtype">void</span> <a class="code" href="struct_nv_flex_vector.html#a225da2c753ca0bb95b570c303f0cd761">copyto</a>(T* dest, <span class="keywordtype">int</span> count) </div> +<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  {</div> +<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  assert(mappedPtr);</div> +<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div> +<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  memcpy(dest, mappedPtr, <span class="keyword">sizeof</span>(T)*count);</div> +<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div> +<div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div> +<div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0"> 161</a></span>  <span class="keywordtype">int</span> <a class="code" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="struct_nv_flex_vector.html#ad462ae46f0270161c79572762b558124">count</a>; }</div> +<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div> +<div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a73f78b1efc76c96666a96a79064670c5"> 163</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_nv_flex_vector.html#a73f78b1efc76c96666a96a79064670c5">empty</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">size</a>() == 0; }</div> +<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div> +<div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a37fbf38300ea57635af4b60c934e9f46"> 165</a></span>  <span class="keyword">const</span> T& <a class="code" href="struct_nv_flex_vector.html#a37fbf38300ea57635af4b60c934e9f46">back</a>()<span class="keyword"> const</span></div> +<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="keyword"> </span>{</div> +<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  assert(mappedPtr);</div> +<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  assert(!<a class="code" href="struct_nv_flex_vector.html#a73f78b1efc76c96666a96a79064670c5">empty</a>());</div> +<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div> +<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">return</span> mappedPtr[count-1];</div> +<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div> +<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div> +<div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#ae0e6ce694fb95a50c2974c6c2cc0ffc8"> 173</a></span>  <span class="keywordtype">void</span> <a class="code" href="struct_nv_flex_vector.html#ae0e6ce694fb95a50c2974c6c2cc0ffc8">reserve</a>(<span class="keywordtype">int</span> minCapacity)</div> +<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  {</div> +<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">if</span> (minCapacity > capacity)</div> +<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  {</div> +<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">// growth factor of 1.5</span></div> +<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> newCapacity = minCapacity*3/2;</div> +<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div> +<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* newBuf = <a class="code" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer</a>(lib, newCapacity, <span class="keyword">sizeof</span>(T), <a class="code" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8">eNvFlexBufferHost</a>);</div> +<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div> +<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="comment">// copy contents to new buffer </span></div> +<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordtype">void</span>* newPtr = <a class="code" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap</a>(newBuf, <a class="code" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">eNvFlexMapWait</a>);</div> +<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  memcpy(newPtr, mappedPtr, count*<span class="keyword">sizeof</span>(T));</div> +<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div> +<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="comment">// unmap old buffer, but leave new buffer mapped</span></div> +<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="struct_nv_flex_vector.html#afca9914468beb61f6c98bc052e2af5e0">unmap</a>();</div> +<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  </div> +<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span> (buffer)</div> +<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <a class="code" href="_nv_flex_8h.html#ab559759820a4322aff061745ef26c867">NvFlexFreeBuffer</a>(buffer);</div> +<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div> +<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="comment">// swap</span></div> +<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  buffer = newBuf;</div> +<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  mappedPtr = (T*)newPtr;</div> +<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  capacity = newCapacity; </div> +<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div> +<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div> +<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div> +<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="comment">// resizes mapped buffer and leaves new buffer mapped </span></div> +<div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a6c4a1f4acb4d6275c9e1ac01d4e35ab1"> 200</a></span>  <span class="keywordtype">void</span> <a class="code" href="struct_nv_flex_vector.html#a6c4a1f4acb4d6275c9e1ac01d4e35ab1">resize</a>(<span class="keywordtype">int</span> newCount)</div> +<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {</div> +<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  assert(mappedPtr || !buffer);</div> +<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div> +<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="struct_nv_flex_vector.html#ae0e6ce694fb95a50c2974c6c2cc0ffc8">reserve</a>(newCount); </div> +<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div> +<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">// resize but do not initialize new entries</span></div> +<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  count = newCount;</div> +<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div> +<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div> +<div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a36a3fd5e42c5d8005f72bcc43217cf37"> 210</a></span>  <span class="keywordtype">void</span> <a class="code" href="struct_nv_flex_vector.html#a36a3fd5e42c5d8005f72bcc43217cf37">resize</a>(<span class="keywordtype">int</span> newCount, <span class="keyword">const</span> T& val)</div> +<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  {</div> +<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  assert(mappedPtr || !buffer);</div> +<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div> +<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> startInit = <a class="code" href="struct_nv_flex_vector.html#ad462ae46f0270161c79572762b558124">count</a>;</div> +<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> endInit = newCount;</div> +<div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div> +<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <a class="code" href="struct_nv_flex_vector.html#a6c4a1f4acb4d6275c9e1ac01d4e35ab1">resize</a>(newCount);</div> +<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div> +<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="comment">// init any new entries</span></div> +<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=startInit; i < endInit; ++i)</div> +<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  mappedPtr[i] = val;</div> +<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div> +<div class="line"><a name="l00223"></a><span class="lineno"> 223</span> };</div> +<div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div> +<div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div> +<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div> +<div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html"> 230</a></span> <span class="keyword">struct </span><a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a></div> +<div class="line"><a name="l00231"></a><span class="lineno"> 231</span> {</div> +<div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a7d35ea2def3a05a5f85a5cdfd5abdc56"> 232</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#a7d35ea2def3a05a5f85a5cdfd5abdc56">position</a>[3];</div> +<div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#ad1af111e19f7ca92fd913c25c4d9288b"> 233</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#ad1af111e19f7ca92fd913c25c4d9288b">rotation</a>[4];</div> +<div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div> +<div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#acc246770a0f65f1e50b43c618955dc84"> 235</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#acc246770a0f65f1e50b43c618955dc84">velocity</a>[3];</div> +<div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a95fbd8d303fe90992b95b63a29eb5344"> 236</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#a95fbd8d303fe90992b95b63a29eb5344">omega</a>[3];</div> +<div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div> +<div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a0705c9d2b5960057b37f097083d96f33"> 238</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#a0705c9d2b5960057b37f097083d96f33">acceleration</a>[3];</div> +<div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#aab0ea63bac05cd6aee5054d369687fb0"> 239</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#aab0ea63bac05cd6aee5054d369687fb0">tau</a>[3];</div> +<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div> +<div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#ae03f4690a66ba4e06e4b2519c688aaba"> 241</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#ae03f4690a66ba4e06e4b2519c688aaba">delta</a>[4][4];</div> +<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> };</div> +<div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div> +<div class="line"><a name="l00280"></a><span class="lineno"> 280</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a6a20d814e3b083b069daa0f20a3e756e">NvFlexExtMovingFrameInit</a>(<a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a>* frame, <span class="keyword">const</span> <span class="keywordtype">float</span>* worldTranslation, <span class="keyword">const</span> <span class="keywordtype">float</span>* worldRotation);</div> +<div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div> +<div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="comment">/* Update a frame to a new position, this will automatically update the velocity and acceleration of</span></div> +<div class="line"><a name="l00283"></a><span class="lineno"> 283</span> <span class="comment"> * the frame, which can then be used to calculate inertial forces. This should be called once per-frame</span></div> +<div class="line"><a name="l00284"></a><span class="lineno"> 284</span> <span class="comment"> * with the new position and time-step used when moving the frame.</span></div> +<div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <span class="comment"> * @param[in] frame A pointer to a user-allocated NvFlexExtMovingFrame struct</span></div> +<div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="comment"> * @param[in] worldTranslation A pointer to a vec3 storing the frame's initial translation in world space</span></div> +<div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="comment"> * @param[in] worldRotation A pointer to a quaternion storing the frame's initial rotation in world space</span></div> +<div class="line"><a name="l00289"></a><span class="lineno"> 289</span> <span class="comment"> * @param[in] dt The time that elapsed since the last call to the frame update</span></div> +<div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="comment"> */</span></div> +<div class="line"><a name="l00291"></a><span class="lineno"> 291</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a780022c1b8425074ce08328e8e8c35cc">NvFlexExtMovingFrameUpdate</a>(<a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a>* frame, <span class="keyword">const</span> <span class="keywordtype">float</span>* worldTranslation, <span class="keyword">const</span> <span class="keywordtype">float</span>* worldRotation, <span class="keywordtype">float</span> dt);</div> +<div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div> +<div class="line"><a name="l00293"></a><span class="lineno"> 293</span> <span class="comment">/* Teleport particles to the frame's new position and apply the inertial forces</span></div> +<div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="comment"> * @param[in] frame A pointer to a user-allocated NvFlexExtMovingFrame struct</span></div> +<div class="line"><a name="l00296"></a><span class="lineno"> 296</span> <span class="comment"> * @param[in] positions A pointer to an array of particle positions in (x, y, z, 1/m) format</span></div> +<div class="line"><a name="l00297"></a><span class="lineno"> 297</span> <span class="comment"> * @param[in] velocities A pointer to an array of particle velocities in (vx, vy, vz) format</span></div> +<div class="line"><a name="l00298"></a><span class="lineno"> 298</span> <span class="comment"> * @param[in] numParticles The number of particles to update</span></div> +<div class="line"><a name="l00299"></a><span class="lineno"> 299</span> <span class="comment"> * @param[in] linearScale How strongly the translational inertial forces should be applied, 0.0 corresponds to a purely local space simulation removing all inertial forces, 1.0 corresponds to no inertial damping and has no benefit over regular world space simulation</span></div> +<div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="comment"> * @param[in] angularScale How strongly the angular inertial forces should be applied, 0.0 corresponds to a purely local space simulation, 1.0 corresponds to no inertial damping</span></div> +<div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <span class="comment"> * @param[in] dt The time that elapsed since the last call to the frame update, should match the value passed to NvFlexExtMovingFrameUpdate()</span></div> +<div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="comment"> */</span></div> +<div class="line"><a name="l00303"></a><span class="lineno"> 303</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a4ffe9bcd59a6cfc8900ac136f5123304">NvFlexExtMovingFrameApply</a>(<a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a>* frame, <span class="keywordtype">float</span>* positions, <span class="keywordtype">float</span>* velocities, <span class="keywordtype">int</span> numParticles, <span class="keywordtype">float</span> linearScale, <span class="keywordtype">float</span> angularScale, <span class="keywordtype">float</span> dt);</div> +<div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div> +<div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div> +<div class="line"><a name="l00310"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html"> 310</a></span> <span class="keyword">struct </span><a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a></div> +<div class="line"><a name="l00311"></a><span class="lineno"> 311</span> { </div> +<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="comment">// particles</span></div> +<div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a0ac3c8cc1bb87eaa50690f44e56a74da"> 313</a></span>  <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#a0ac3c8cc1bb87eaa50690f44e56a74da">particles</a>; </div> +<div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a4eceb2845977219379afdd06397a6706"> 314</a></span>  <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#a4eceb2845977219379afdd06397a6706">numParticles</a>; </div> +<div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#ab421c4d72574f468af6827c18c36a387"> 315</a></span>  <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#ab421c4d72574f468af6827c18c36a387">maxParticles</a>; </div> +<div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div> +<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="comment">// springs</span></div> +<div class="line"><a name="l00318"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a8b7a9bd9cbd2f33c6b3da02687a6bd9d"> 318</a></span>  <span class="keywordtype">int</span>* <a class="code" href="_nv_flex_ext_8h.html#a8b7a9bd9cbd2f33c6b3da02687a6bd9d">springIndices</a>; </div> +<div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a1e8252d5e5f66b3d8920c1371f23cc05"> 319</a></span>  <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#a1e8252d5e5f66b3d8920c1371f23cc05">springCoefficients</a>; </div> +<div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a9020959583f85486e060a7b5e611476d"> 320</a></span>  <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#a9020959583f85486e060a7b5e611476d">springRestLengths</a>; </div> +<div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#ae5f81891f59382b133319dc3bcea8ba0"> 321</a></span>  <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#ae5f81891f59382b133319dc3bcea8ba0">numSprings</a>; </div> +<div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div> +<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="comment">// shapes</span></div> +<div class="line"><a name="l00324"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a8a4a122a0a95b8262fc4673298a5cb1c"> 324</a></span>  <span class="keywordtype">int</span>* <a class="code" href="_nv_flex_ext_8h.html#a8a4a122a0a95b8262fc4673298a5cb1c">shapeIndices</a>; </div> +<div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a4810f46c27fd0cfacfb1f4be9dff0479"> 325</a></span>  <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#a4810f46c27fd0cfacfb1f4be9dff0479">numShapeIndices</a>; </div> +<div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a96b73b81c5db272d950efe3f03a8cef8"> 326</a></span>  <span class="keywordtype">int</span>* <a class="code" href="_nv_flex_ext_8h.html#a96b73b81c5db272d950efe3f03a8cef8">shapeOffsets</a>; </div> +<div class="line"><a name="l00327"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a0fd9407aad5001d3a9fe90e989da1aad"> 327</a></span>  <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#a0fd9407aad5001d3a9fe90e989da1aad">shapeCoefficients</a>; </div> +<div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a24866c3fe2c482073325062c9c80d043"> 328</a></span>  <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#a24866c3fe2c482073325062c9c80d043">shapeCenters</a>; </div> +<div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#afc07cf2edbf4d5bf504890b312a98bd7"> 329</a></span>  <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#afc07cf2edbf4d5bf504890b312a98bd7">numShapes</a>; </div> +<div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div> +<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="comment">// faces for cloth</span></div> +<div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#aeee311155e99ce95c506078964a7dc3c"> 332</a></span>  <span class="keywordtype">int</span>* <a class="code" href="_nv_flex_ext_8h.html#aeee311155e99ce95c506078964a7dc3c">triangleIndices</a>; </div> +<div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#ad858d4df98a4300668f2b8048881c0d5"> 333</a></span>  <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#ad858d4df98a4300668f2b8048881c0d5">numTriangles</a>; </div> +<div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div> +<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="comment">// inflatable params</span></div> +<div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a960073478e49b229d1d19ac64c5b23f7"> 336</a></span>  <span class="keywordtype">bool</span> <a class="code" href="_nv_flex_ext_8h.html#a960073478e49b229d1d19ac64c5b23f7">inflatable</a>; </div> +<div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a3fc55581814cbab90a0c4167428893df"> 337</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#a3fc55581814cbab90a0c4167428893df">inflatableVolume</a>; </div> +<div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#ab556b9c29acfda73e14c68edc43be7e3"> 338</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#ab556b9c29acfda73e14c68edc43be7e3">inflatablePressure</a>; </div> +<div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#ad4d5551b97bd31b9e1ca5c57f2c82452"> 339</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#ad4d5551b97bd31b9e1ca5c57f2c82452">inflatableStiffness</a>; </div> +<div class="line"><a name="l00340"></a><span class="lineno"> 340</span> };</div> +<div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div> +<div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html"> 345</a></span> <span class="keyword">struct </span><a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_instance">NvFlexExtInstance</a></div> +<div class="line"><a name="l00346"></a><span class="lineno"> 346</span> {</div> +<div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a1a0c7a0c03148b1586c4fb48f14a565f"> 347</a></span>  <span class="keywordtype">int</span>* <a class="code" href="_nv_flex_ext_8h.html#a1a0c7a0c03148b1586c4fb48f14a565f">particleIndices</a>; </div> +<div class="line"><a name="l00348"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#aca9a5ecc1fd26fedf90f8f17e87e3ca8"> 348</a></span>  <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#aca9a5ecc1fd26fedf90f8f17e87e3ca8">numParticles</a>; </div> +<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  </div> +<div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a3288fee0b909e9e768d9abc9b8da74cf"> 350</a></span>  <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#a3288fee0b909e9e768d9abc9b8da74cf">triangleIndex</a>; </div> +<div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#aa67489d3beb86e2b566e0fa2e978ed11"> 351</a></span>  <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#aa67489d3beb86e2b566e0fa2e978ed11">shapeIndex</a>; </div> +<div class="line"><a name="l00352"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#ac2ef832cadd91e257ba80eb97d936340"> 352</a></span>  <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#ac2ef832cadd91e257ba80eb97d936340">inflatableIndex</a>; </div> +<div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div> +<div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#aa6fb48cb1199af96a29de7616f7a4d18"> 354</a></span>  <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#aa6fb48cb1199af96a29de7616f7a4d18">shapeTranslations</a>; </div> +<div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a3d0a712689ce07a5652d48ea25fa05b9"> 355</a></span>  <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#a3d0a712689ce07a5652d48ea25fa05b9">shapeRotations</a>; </div> +<div class="line"><a name="l00356"></a><span class="lineno"> 356</span> </div> +<div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#aa4f19c17fa4ae35ceda90c8b3d1fcca4"> 357</a></span>  <span class="keyword">const</span> <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* <a class="code" href="_nv_flex_ext_8h.html#aa4f19c17fa4ae35ceda90c8b3d1fcca4">asset</a>; </div> +<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  </div> +<div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a8000e722ce864bbfbce0f303f39186d7"> 359</a></span>  <span class="keywordtype">void</span>* <a class="code" href="_nv_flex_ext_8h.html#a8000e722ce864bbfbce0f303f39186d7">userData</a>; </div> +<div class="line"><a name="l00360"></a><span class="lineno"> 360</span> };</div> +<div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div> +<div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4"> 365</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> <a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>;</div> +<div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div> +<div class="line"><a name="l00378"></a><span class="lineno"> 378</span> NV_FLEX_API <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#a82a15dfd40b338a07cf4517f55f16720">NvFlexExtCreateWeldedMeshIndices</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* vertices, <span class="keywordtype">int</span> numVertices, <span class="keywordtype">int</span>* uniqueVerts, <span class="keywordtype">int</span>* originalToUniqueMap, <span class="keywordtype">float</span> threshold);</div> +<div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div> +<div class="line"><a name="l00395"></a><span class="lineno"> 395</span> NV_FLEX_API <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* <a class="code" href="_nv_flex_ext_8h.html#a8bef033b2a8567dfcc954e22534147ee">NvFlexExtCreateClothFromMesh</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* particles, <span class="keywordtype">int</span> numParticles, <span class="keyword">const</span> <span class="keywordtype">int</span>* indices, <span class="keywordtype">int</span> numTriangles, <span class="keywordtype">float</span> stretchStiffness, <span class="keywordtype">float</span> bendStiffness, <span class="keywordtype">float</span> tetherStiffness, <span class="keywordtype">float</span> tetherGive, <span class="keywordtype">float</span> pressure);</div> +<div class="line"><a name="l00396"></a><span class="lineno"> 396</span> </div> +<div class="line"><a name="l00415"></a><span class="lineno"> 415</span> NV_FLEX_API <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* <a class="code" href="_nv_flex_ext_8h.html#addad82b3598059ffde7b3b5babe17bd4">NvFlexExtCreateTearingClothFromMesh</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* particles, <span class="keywordtype">int</span> numParticles, <span class="keywordtype">int</span> maxParticles, <span class="keyword">const</span> <span class="keywordtype">int</span>* indices, <span class="keywordtype">int</span> numTriangles, <span class="keywordtype">float</span> stretchStiffness, <span class="keywordtype">float</span> bendStiffness, <span class="keywordtype">float</span> pressure);</div> +<div class="line"><a name="l00416"></a><span class="lineno"> 416</span> </div> +<div class="line"><a name="l00421"></a><span class="lineno"> 421</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a88054283907d3386f1a30cdc4475acb0">NvFlexExtDestroyTearingCloth</a>(<a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* asset);</div> +<div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div> +<div class="line"><a name="l00428"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html"> 428</a></span> <span class="keyword">struct </span><a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_particle_clone">NvFlexExtTearingParticleClone</a></div> +<div class="line"><a name="l00429"></a><span class="lineno"> 429</span> {</div> +<div class="line"><a name="l00430"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a431c97a2756c45752dd7508f0810a397"> 430</a></span>  <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#a431c97a2756c45752dd7508f0810a397">srcIndex</a>; </div> +<div class="line"><a name="l00431"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a9034efff0f1b158a12a9ed6991d620fa"> 431</a></span>  <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#a9034efff0f1b158a12a9ed6991d620fa">destIndex</a>;</div> +<div class="line"><a name="l00432"></a><span class="lineno"> 432</span> };</div> +<div class="line"><a name="l00433"></a><span class="lineno"> 433</span> </div> +<div class="line"><a name="l00441"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html"> 441</a></span> <span class="keyword">struct </span><a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_mesh_edit">NvFlexExtTearingMeshEdit</a></div> +<div class="line"><a name="l00442"></a><span class="lineno"> 442</span> {</div> +<div class="line"><a name="l00443"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a46b80c02097ebc40bf777708e8f17ed4"> 443</a></span>  <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#a46b80c02097ebc40bf777708e8f17ed4">triIndex</a>; <span class="comment">// index into the triangle indices array to update</span></div> +<div class="line"><a name="l00444"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a8cf124de0fc370757cb890f83984ced8"> 444</a></span>  <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#a8cf124de0fc370757cb890f83984ced8">newParticleIndex</a>; <span class="comment">// new value for the index</span></div> +<div class="line"><a name="l00445"></a><span class="lineno"> 445</span> };</div> +<div class="line"><a name="l00446"></a><span class="lineno"> 446</span> </div> +<div class="line"><a name="l00461"></a><span class="lineno"> 461</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a5efc0113d5432eb959437e6e3a98cc5f">NvFlexExtTearClothMesh</a>(<a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* asset, <span class="keywordtype">float</span> maxStrain, <span class="keywordtype">int</span> maxSplits, <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_particle_clone">NvFlexExtTearingParticleClone</a>* particleCopies, <span class="keywordtype">int</span>* numParticleCopies, <span class="keywordtype">int</span> maxCopies, <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_mesh_edit">NvFlexExtTearingMeshEdit</a>* triangleEdits, <span class="keywordtype">int</span>* numTriangleEdits, <span class="keywordtype">int</span> maxEdits);</div> +<div class="line"><a name="l00462"></a><span class="lineno"> 462</span> </div> +<div class="line"><a name="l00474"></a><span class="lineno"> 474</span> NV_FLEX_API <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* <a class="code" href="_nv_flex_ext_8h.html#ad0a9c7e2f907e46b60f6bacf402987ce">NvFlexExtCreateRigidFromMesh</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* vertices, <span class="keywordtype">int</span> numVertices, <span class="keyword">const</span> <span class="keywordtype">int</span>* indices, <span class="keywordtype">int</span> numTriangleIndices, <span class="keywordtype">float</span> radius, <span class="keywordtype">float</span> expand);</div> +<div class="line"><a name="l00475"></a><span class="lineno"> 475</span> </div> +<div class="line"><a name="l00494"></a><span class="lineno"> 494</span> NV_FLEX_API <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* <a class="code" href="_nv_flex_ext_8h.html#a9f2c0daf521df4920e44cca1cb30b42c">NvFlexExtCreateSoftFromMesh</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* vertices, <span class="keywordtype">int</span> numVertices, <span class="keyword">const</span> <span class="keywordtype">int</span>* indices, <span class="keywordtype">int</span> numTriangleIndices, <span class="keywordtype">float</span> particleSpacing, <span class="keywordtype">float</span> volumeSampling, <span class="keywordtype">float</span> surfaceSampling, <span class="keywordtype">float</span> clusterSpacing, <span class="keywordtype">float</span> clusterRadius, <span class="keywordtype">float</span> clusterStiffness, <span class="keywordtype">float</span> linkRadius, <span class="keywordtype">float</span> linkStiffness, <span class="keywordtype">float</span> globalStiffness);</div> +<div class="line"><a name="l00495"></a><span class="lineno"> 495</span> </div> +<div class="line"><a name="l00500"></a><span class="lineno"> 500</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a36c33fafe13c5fd5773bf9a2af2dd745">NvFlexExtDestroyAsset</a>(<a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* asset);</div> +<div class="line"><a name="l00501"></a><span class="lineno"> 501</span> </div> +<div class="line"><a name="l00514"></a><span class="lineno"> 514</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a6e3f12e9e92abb31b115cf31b33e34bb">NvFlexExtCreateSoftMeshSkinning</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* vertices, <span class="keywordtype">int</span> numVertices, <span class="keyword">const</span> <span class="keywordtype">float</span>* bones, <span class="keywordtype">int</span> numBones, <span class="keywordtype">float</span> falloff, <span class="keywordtype">float</span> maxDistance, <span class="keywordtype">float</span>* skinningWeights, <span class="keywordtype">int</span>* skinningIndices);</div> +<div class="line"><a name="l00515"></a><span class="lineno"> 515</span> </div> +<div class="line"><a name="l00524"></a><span class="lineno"> 524</span> NV_FLEX_API <a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* <a class="code" href="_nv_flex_ext_8h.html#a49906c9e3466d40383cddf627fe26658">NvFlexExtCreateContainer</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, <a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <span class="keywordtype">int</span> maxParticles);</div> +<div class="line"><a name="l00525"></a><span class="lineno"> 525</span> </div> +<div class="line"><a name="l00531"></a><span class="lineno"> 531</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a2509137d9fb8ab6818f35ab7761da7a5">NvFlexExtDestroyContainer</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container);</div> +<div class="line"><a name="l00532"></a><span class="lineno"> 532</span> </div> +<div class="line"><a name="l00540"></a><span class="lineno"> 540</span> NV_FLEX_API <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#a7c036ccca83df3659529858068e0593d">NvFlexExtAllocParticles</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span>* indices);</div> +<div class="line"><a name="l00541"></a><span class="lineno"> 541</span> </div> +<div class="line"><a name="l00549"></a><span class="lineno"> 549</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#ab0a259d159116b7fba9b229784b02c70">NvFlexExtFreeParticles</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container, <span class="keywordtype">int</span> n, <span class="keyword">const</span> <span class="keywordtype">int</span>* indices);</div> +<div class="line"><a name="l00550"></a><span class="lineno"> 550</span> </div> +<div class="line"><a name="l00551"></a><span class="lineno"> 551</span> </div> +<div class="line"><a name="l00559"></a><span class="lineno"> 559</span> NV_FLEX_API <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#a7fc268a27306f6fc68dd1c106cfa62db">NvFlexExtGetActiveList</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container, <span class="keywordtype">int</span>* indices);</div> +<div class="line"><a name="l00560"></a><span class="lineno"> 560</span> </div> +<div class="line"><a name="l00561"></a><span class="lineno"> 561</span> </div> +<div class="line"><a name="l00562"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html"> 562</a></span> <span class="keyword">struct </span><a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_particle_data">NvFlexExtParticleData</a></div> +<div class="line"><a name="l00563"></a><span class="lineno"> 563</span> {</div> +<div class="line"><a name="l00564"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a780c0bac62cc5dd8d04da11cff07eeba"> 564</a></span>  <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#a780c0bac62cc5dd8d04da11cff07eeba">particles</a>; </div> +<div class="line"><a name="l00565"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a69962fe23c7fef594fb5f36a175ff148"> 565</a></span>  <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#a69962fe23c7fef594fb5f36a175ff148">restParticles</a>; </div> +<div class="line"><a name="l00566"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#adbb39b1f8b0705bb3e19d2cb6145640f"> 566</a></span>  <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#adbb39b1f8b0705bb3e19d2cb6145640f">velocities</a>; </div> +<div class="line"><a name="l00567"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a7fa35a822a4e856fee45b3263e679270"> 567</a></span>  <span class="keywordtype">int</span>* <a class="code" href="_nv_flex_ext_8h.html#a7fa35a822a4e856fee45b3263e679270">phases</a>; </div> +<div class="line"><a name="l00568"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#afcacbd584e2041855af50eae3f287779"> 568</a></span>  <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#afcacbd584e2041855af50eae3f287779">normals</a>; </div> +<div class="line"><a name="l00569"></a><span class="lineno"> 569</span> </div> +<div class="line"><a name="l00570"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#af911b47ddb538a0542f6e2c38a82d701"> 570</a></span>  <span class="keyword">const</span> <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#af911b47ddb538a0542f6e2c38a82d701">lower</a>; </div> +<div class="line"><a name="l00571"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#ad722c319fe60d8a0933df217ba04b2ac"> 571</a></span>  <span class="keyword">const</span> <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#ad722c319fe60d8a0933df217ba04b2ac">upper</a>; </div> +<div class="line"><a name="l00572"></a><span class="lineno"> 572</span> };</div> +<div class="line"><a name="l00573"></a><span class="lineno"> 573</span> </div> +<div class="line"><a name="l00580"></a><span class="lineno"> 580</span> NV_FLEX_API <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_particle_data">NvFlexExtParticleData</a> <a class="code" href="_nv_flex_ext_8h.html#a3fa8bd4b7d4096602e611faf0bb62dfb">NvFlexExtMapParticleData</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container);</div> +<div class="line"><a name="l00581"></a><span class="lineno"> 581</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#af0cd639c21be28640fe5e1dd94931d59">NvFlexExtUnmapParticleData</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container);</div> +<div class="line"><a name="l00582"></a><span class="lineno"> 582</span> </div> +<div class="line"><a name="l00583"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html"> 583</a></span> <span class="keyword">struct </span><a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_triangle_data">NvFlexExtTriangleData</a></div> +<div class="line"><a name="l00584"></a><span class="lineno"> 584</span> {</div> +<div class="line"><a name="l00585"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a806a707d6b32c41ab561a4893f43ddde"> 585</a></span>  <span class="keywordtype">int</span>* <a class="code" href="_nv_flex_ext_8h.html#a806a707d6b32c41ab561a4893f43ddde">indices</a>; </div> +<div class="line"><a name="l00586"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a56bf3b1fe603c79b871ead2efb65cc78"> 586</a></span>  <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#a56bf3b1fe603c79b871ead2efb65cc78">normals</a>; </div> +<div class="line"><a name="l00587"></a><span class="lineno"> 587</span> };</div> +<div class="line"><a name="l00588"></a><span class="lineno"> 588</span> </div> +<div class="line"><a name="l00594"></a><span class="lineno"> 594</span> NV_FLEX_API <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_triangle_data">NvFlexExtTriangleData</a> <a class="code" href="_nv_flex_ext_8h.html#a1646bf409084777cd0ff5d4fcccf07de">NvFlexExtMapTriangleData</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container);</div> +<div class="line"><a name="l00595"></a><span class="lineno"> 595</span> </div> +<div class="line"><a name="l00599"></a><span class="lineno"> 599</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a89e582ae93e0256b06f22d9abf361783">NvFlexExtUnmapTriangleData</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container);</div> +<div class="line"><a name="l00600"></a><span class="lineno"> 600</span> </div> +<div class="line"><a name="l00601"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html"> 601</a></span> <span class="keyword">struct </span><a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_shape_data">NvFlexExtShapeData</a></div> +<div class="line"><a name="l00602"></a><span class="lineno"> 602</span> {</div> +<div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a6517fee9c5e151673ecd5ad91cbf2ae2"> 603</a></span>  <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#a6517fee9c5e151673ecd5ad91cbf2ae2">rotations</a>; </div> +<div class="line"><a name="l00604"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#acd73f347463a114da73bb1ab5eff00b4"> 604</a></span>  <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#acd73f347463a114da73bb1ab5eff00b4">positions</a>; </div> +<div class="line"><a name="l00605"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a4e845f47484e00a272ad351b4bf28e95"> 605</a></span>  <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#a4e845f47484e00a272ad351b4bf28e95">n</a>; </div> +<div class="line"><a name="l00606"></a><span class="lineno"> 606</span> };</div> +<div class="line"><a name="l00607"></a><span class="lineno"> 607</span> </div> +<div class="line"><a name="l00613"></a><span class="lineno"> 613</span> NV_FLEX_API <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_shape_data">NvFlexExtShapeData</a> <a class="code" href="_nv_flex_ext_8h.html#a90f2d3ba5be20e70e7efead911ee7acc">NvFlexExtMapShapeData</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container);</div> +<div class="line"><a name="l00614"></a><span class="lineno"> 614</span> </div> +<div class="line"><a name="l00618"></a><span class="lineno"> 618</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#ab51f04114586b5bf0f6fc5816fda9c69">NvFlexExtUnmapShapeData</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container);</div> +<div class="line"><a name="l00619"></a><span class="lineno"> 619</span> </div> +<div class="line"><a name="l00635"></a><span class="lineno"> 635</span> NV_FLEX_API <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_instance">NvFlexExtInstance</a>* <a class="code" href="_nv_flex_ext_8h.html#a3bf10e2c9370602142b7be01e920f973">NvFlexExtCreateInstance</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container, <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_particle_data">NvFlexExtParticleData</a>* particleData, <span class="keyword">const</span> <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* asset, <span class="keyword">const</span> <span class="keywordtype">float</span>* transform, <span class="keywordtype">float</span> vx, <span class="keywordtype">float</span> vy, <span class="keywordtype">float</span> vz, <span class="keywordtype">int</span> phase, <span class="keywordtype">float</span> invMassScale);</div> +<div class="line"><a name="l00636"></a><span class="lineno"> 636</span> </div> +<div class="line"><a name="l00642"></a><span class="lineno"> 642</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a2b5634f64bd0d8d86f894885a1c16a33">NvFlexExtDestroyInstance</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container, <span class="keyword">const</span> <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_instance">NvFlexExtInstance</a>* instance);</div> +<div class="line"><a name="l00643"></a><span class="lineno"> 643</span> </div> +<div class="line"><a name="l00650"></a><span class="lineno"> 650</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#ad9343d07f49098ee205a1ed48dc9db34">NvFlexExtNotifyAssetChanged</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container, <span class="keyword">const</span> <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* asset);</div> +<div class="line"><a name="l00651"></a><span class="lineno"> 651</span> </div> +<div class="line"><a name="l00681"></a><span class="lineno"> 681</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#ab4caadf5a6b19674849bfce91d986e7b">NvFlexExtTickContainer</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container, <span class="keywordtype">float</span> dt, <span class="keywordtype">int</span> numSubsteps, <span class="keywordtype">bool</span> enableTimers=<span class="keyword">false</span>);</div> +<div class="line"><a name="l00682"></a><span class="lineno"> 682</span> </div> +<div class="line"><a name="l00688"></a><span class="lineno"> 688</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a425f4e472bb83797498c904ab228209c">NvFlexExtPushToDevice</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container);</div> +<div class="line"><a name="l00689"></a><span class="lineno"> 689</span> </div> +<div class="line"><a name="l00695"></a><span class="lineno"> 695</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a89ea7bbd26bec46f1b82d84257de1f58">NvFlexExtPullFromDevice</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container);</div> +<div class="line"><a name="l00696"></a><span class="lineno"> 696</span> </div> +<div class="line"><a name="l00702"></a><span class="lineno"> 702</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a4695d37db8b61495f200bfd88a2be628">NvFlexExtUpdateInstances</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container);</div> +<div class="line"><a name="l00703"></a><span class="lineno"> 703</span> </div> +<div class="line"><a name="l00704"></a><span class="lineno"> 704</span> </div> +<div class="line"><a name="l00708"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68e"> 708</a></span> <span class="keyword">enum</span> <a class="code" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68e">NvFlexExtForceMode</a></div> +<div class="line"><a name="l00709"></a><span class="lineno"> 709</span> {</div> +<div class="line"><a name="l00711"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea9d4e8413b628837f9d1982897fd1f4a2"> 711</a></span>  <a class="code" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea9d4e8413b628837f9d1982897fd1f4a2">eNvFlexExtModeForce</a> = 0,</div> +<div class="line"><a name="l00712"></a><span class="lineno"> 712</span> </div> +<div class="line"><a name="l00714"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea92265f22fc2a724baf640fdace8f8ea0"> 714</a></span>  <a class="code" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea92265f22fc2a724baf640fdace8f8ea0">eNvFlexExtModeImpulse</a> = 1,</div> +<div class="line"><a name="l00715"></a><span class="lineno"> 715</span> </div> +<div class="line"><a name="l00717"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea6a2e4817b1e86764147c81e8d5e5070c"> 717</a></span>  <a class="code" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea6a2e4817b1e86764147c81e8d5e5070c">eNvFlexExtModeVelocityChange</a> = 2,</div> +<div class="line"><a name="l00718"></a><span class="lineno"> 718</span> };</div> +<div class="line"><a name="l00719"></a><span class="lineno"> 719</span> </div> +<div class="line"><a name="l00723"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html"> 723</a></span> <span class="keyword">struct </span><a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_force_field">NvFlexExtForceField</a></div> +<div class="line"><a name="l00724"></a><span class="lineno"> 724</span> {</div> +<div class="line"><a name="l00725"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a9e6134ffeca22636dcd467fa4dee1ba0"> 725</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#a9e6134ffeca22636dcd467fa4dee1ba0">mPosition</a>[3]; </div> +<div class="line"><a name="l00726"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a7ad225a762dcf91b7155c7229dd08d38"> 726</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#a7ad225a762dcf91b7155c7229dd08d38">mRadius</a>; </div> +<div class="line"><a name="l00727"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a0b9729f9896faba45c861a1e8d15290b"> 727</a></span>  <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#a0b9729f9896faba45c861a1e8d15290b">mStrength</a>; </div> +<div class="line"><a name="l00728"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a3d7dba5a4d9fce7230bc20a8bb567951"> 728</a></span>  <a class="code" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68e">NvFlexExtForceMode</a> <a class="code" href="_nv_flex_ext_8h.html#a3d7dba5a4d9fce7230bc20a8bb567951">mMode</a>; </div> +<div class="line"><a name="l00729"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a785f5a041fb93cf460cde7153f87fa02"> 729</a></span>  <span class="keywordtype">bool</span> <a class="code" href="_nv_flex_ext_8h.html#a785f5a041fb93cf460cde7153f87fa02">mLinearFalloff</a>; </div> +<div class="line"><a name="l00730"></a><span class="lineno"> 730</span> };</div> +<div class="line"><a name="l00731"></a><span class="lineno"> 731</span> </div> +<div class="line"><a name="l00736"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f"> 736</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a> <a class="code" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a>;</div> +<div class="line"><a name="l00737"></a><span class="lineno"> 737</span> </div> +<div class="line"><a name="l00745"></a><span class="lineno"> 745</span> NV_FLEX_API <a class="code" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a>* <a class="code" href="_nv_flex_ext_8h.html#ac1ed9ff49120d0691352399c8173bdcf">NvFlexExtCreateForceFieldCallback</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver);</div> +<div class="line"><a name="l00746"></a><span class="lineno"> 746</span> </div> +<div class="line"><a name="l00752"></a><span class="lineno"> 752</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#ad08da77f432ca56bc59647bf73da86cb">NvFlexExtDestroyForceFieldCallback</a>(<a class="code" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a>* callback);</div> +<div class="line"><a name="l00753"></a><span class="lineno"> 753</span> </div> +<div class="line"><a name="l00761"></a><span class="lineno"> 761</span> NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#aa36d43b9e53b9b66d43c2bc5eb5abf98">NvFlexExtSetForceFields</a>(<a class="code" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a>* callback, <span class="keyword">const</span> <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_force_field">NvFlexExtForceField</a>* forceFields, <span class="keywordtype">int</span> numForceFields);</div> +<div class="line"><a name="l00762"></a><span class="lineno"> 762</span> </div> +<div class="line"><a name="l00763"></a><span class="lineno"> 763</span> </div> +<div class="line"><a name="l00764"></a><span class="lineno"> 764</span> </div> +<div class="line"><a name="l00765"></a><span class="lineno"> 765</span> } <span class="comment">// extern "C"</span></div> +<div class="line"><a name="l00766"></a><span class="lineno"> 766</span> </div> +<div class="line"><a name="l00767"></a><span class="lineno"> 767</span> <span class="preprocessor">#endif // NV_FLEX_EXT_H</span></div> +<div class="line"><a name="l00768"></a><span class="lineno"> 768</span> </div> +<div class="ttc" id="_nv_flex_ext_8h_html_a785f5a041fb93cf460cde7153f87fa02"><div class="ttname"><a href="_nv_flex_ext_8h.html#a785f5a041fb93cf460cde7153f87fa02">NvFlexExtForceField::mLinearFalloff</a></div><div class="ttdeci">bool mLinearFalloff</div><div class="ttdoc">Linear or no falloff. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:729</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_ade3c494ee6e75e54a6ba73d6bc100bd9"><div class="ttname"><a href="struct_nv_flex_vector.html#ade3c494ee6e75e54a6ba73d6bc100bd9">NvFlexVector::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:85</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a4eceb2845977219379afdd06397a6706"><div class="ttname"><a href="_nv_flex_ext_8h.html#a4eceb2845977219379afdd06397a6706">NvFlexExtAsset::numParticles</a></div><div class="ttdeci">int numParticles</div><div class="ttdoc">Number of particles. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:314</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a24866c3fe2c482073325062c9c80d043"><div class="ttname"><a href="_nv_flex_ext_8h.html#a24866c3fe2c482073325062c9c80d043">NvFlexExtAsset::shapeCenters</a></div><div class="ttdeci">float * shapeCenters</div><div class="ttdoc">The position of the center of mass of each shape, an array of vec3s mNumShapes in length...</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:328</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_aa36d43b9e53b9b66d43c2bc5eb5abf98"><div class="ttname"><a href="_nv_flex_ext_8h.html#aa36d43b9e53b9b66d43c2bc5eb5abf98">NvFlexExtSetForceFields</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtSetForceFields(NvFlexExtForceFieldCallback *callback, const NvFlexExtForceField *forceFields, int numForceFields)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a4ffe9bcd59a6cfc8900ac136f5123304"><div class="ttname"><a href="_nv_flex_ext_8h.html#a4ffe9bcd59a6cfc8900ac136f5123304">NvFlexExtMovingFrameApply</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtMovingFrameApply(NvFlexExtMovingFrame *frame, float *positions, float *velocities, int numParticles, float linearScale, float angularScale, float dt)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a9f2c0daf521df4920e44cca1cb30b42c"><div class="ttname"><a href="_nv_flex_ext_8h.html#a9f2c0daf521df4920e44cca1cb30b42c">NvFlexExtCreateSoftFromMesh</a></div><div class="ttdeci">NV_FLEX_API NvFlexExtAsset * NvFlexExtCreateSoftFromMesh(const float *vertices, int numVertices, const int *indices, int numTriangleIndices, float particleSpacing, float volumeSampling, float surfaceSampling, float clusterSpacing, float clusterRadius, float clusterStiffness, float linkRadius, float linkStiffness, float globalStiffness)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a3d0a712689ce07a5652d48ea25fa05b9"><div class="ttname"><a href="_nv_flex_ext_8h.html#a3d0a712689ce07a5652d48ea25fa05b9">NvFlexExtInstance::shapeRotations</a></div><div class="ttdeci">float * shapeRotations</div><div class="ttdoc">Shape matching group rotations (quaternions) </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:355</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a4e845f47484e00a272ad351b4bf28e95"><div class="ttname"><a href="_nv_flex_ext_8h.html#a4e845f47484e00a272ad351b4bf28e95">NvFlexExtShapeData::n</a></div><div class="ttdeci">int n</div><div class="ttdoc">Number of valid tranforms. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:605</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_ab08ce71766df91fc9201a61a48054d0c"><div class="ttname"><a href="struct_nv_flex_vector.html#ab08ce71766df91fc9201a61a48054d0c">NvFlexVector::lib</a></div><div class="ttdeci">NvFlexLibrary * lib</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:70</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a0ac3c8cc1bb87eaa50690f44e56a74da"><div class="ttname"><a href="_nv_flex_ext_8h.html#a0ac3c8cc1bb87eaa50690f44e56a74da">NvFlexExtAsset::particles</a></div><div class="ttdeci">float * particles</div><div class="ttdoc">Local space particle positions, x,y,z,1/mass. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:313</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a96b73b81c5db272d950efe3f03a8cef8"><div class="ttname"><a href="_nv_flex_ext_8h.html#a96b73b81c5db272d950efe3f03a8cef8">NvFlexExtAsset::shapeOffsets</a></div><div class="ttdeci">int * shapeOffsets</div><div class="ttdoc">Each entry stores the end of the shape's indices in the indices array (exclusive prefix sum of shape ...</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:326</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a8cf124de0fc370757cb890f83984ced8"><div class="ttname"><a href="_nv_flex_ext_8h.html#a8cf124de0fc370757cb890f83984ced8">NvFlexExtTearingMeshEdit::newParticleIndex</a></div><div class="ttdeci">int newParticleIndex</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:444</div></div> +<div class="ttc" id="_nv_flex_8h_html_a054cb27646a389ea257d1bbde46a6e97"><div class="ttname"><a href="_nv_flex_8h.html#a054cb27646a389ea257d1bbde46a6e97">NvFlexUnmap</a></div><div class="ttdeci">NV_FLEX_API void NvFlexUnmap(NvFlexBuffer *buffer)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a2b5634f64bd0d8d86f894885a1c16a33"><div class="ttname"><a href="_nv_flex_ext_8h.html#a2b5634f64bd0d8d86f894885a1c16a33">NvFlexExtDestroyInstance</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtDestroyInstance(NvFlexExtContainer *container, const NvFlexExtInstance *instance)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a780022c1b8425074ce08328e8e8c35cc"><div class="ttname"><a href="_nv_flex_ext_8h.html#a780022c1b8425074ce08328e8e8c35cc">NvFlexExtMovingFrameUpdate</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtMovingFrameUpdate(NvFlexExtMovingFrame *frame, const float *worldTranslation, const float *worldRotation, float dt)</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_a0309d584abbe900d3af3823a79e89ee7"><div class="ttname"><a href="struct_nv_flex_vector.html#a0309d584abbe900d3af3823a79e89ee7">NvFlexVector::init</a></div><div class="ttdeci">void init(int size)</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:78</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_ad0a9c7e2f907e46b60f6bacf402987ce"><div class="ttname"><a href="_nv_flex_ext_8h.html#ad0a9c7e2f907e46b60f6bacf402987ce">NvFlexExtCreateRigidFromMesh</a></div><div class="ttdeci">NV_FLEX_API NvFlexExtAsset * NvFlexExtCreateRigidFromMesh(const float *vertices, int numVertices, const int *indices, int numTriangleIndices, float radius, float expand)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a9020959583f85486e060a7b5e611476d"><div class="ttname"><a href="_nv_flex_ext_8h.html#a9020959583f85486e060a7b5e611476d">NvFlexExtAsset::springRestLengths</a></div><div class="ttdeci">float * springRestLengths</div><div class="ttdoc">Spring rest-lengths. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:320</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_a1933b633e9055d9adf8b62c4aa8a3bc0"><div class="ttname"><a href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">NvFlexVector::size</a></div><div class="ttdeci">int size() const </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:161</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_ab4caadf5a6b19674849bfce91d986e7b"><div class="ttname"><a href="_nv_flex_ext_8h.html#ab4caadf5a6b19674849bfce91d986e7b">NvFlexExtTickContainer</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtTickContainer(NvFlexExtContainer *container, float dt, int numSubsteps, bool enableTimers=false)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_struct_nv_flex_ext_particle_data"><div class="ttname"><a href="_nv_flex_ext_8h.html#struct_nv_flex_ext_particle_data">NvFlexExtParticleData</a></div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:562</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_aca9a5ecc1fd26fedf90f8f17e87e3ca8"><div class="ttname"><a href="_nv_flex_ext_8h.html#aca9a5ecc1fd26fedf90f8f17e87e3ca8">NvFlexExtInstance::numParticles</a></div><div class="ttdeci">int numParticles</div><div class="ttdoc">Number of simulation particles. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:348</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_af0cd639c21be28640fe5e1dd94931d59"><div class="ttname"><a href="_nv_flex_ext_8h.html#af0cd639c21be28640fe5e1dd94931d59">NvFlexExtUnmapParticleData</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtUnmapParticleData(NvFlexExtContainer *container)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_afaf84632a42346a718009bcda5efc8b4"><div class="ttname"><a href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a></div><div class="ttdeci">struct NvFlexExtContainer NvFlexExtContainer</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:365</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_a769d5ad0723a3fceac7951967e8b4d03"><div class="ttname"><a href="struct_nv_flex_vector.html#a769d5ad0723a3fceac7951967e8b4d03">NvFlexVector::operator[]</a></div><div class="ttdeci">T & operator[](int index)</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:127</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_a026d8fcd71bb256610401cc861345428"><div class="ttname"><a href="struct_nv_flex_vector.html#a026d8fcd71bb256610401cc861345428">NvFlexVector::NvFlexVector</a></div><div class="ttdeci">NvFlexVector(NvFlexLibrary *l, const T *ptr, int size)</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:58</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a8000e722ce864bbfbce0f303f39186d7"><div class="ttname"><a href="_nv_flex_ext_8h.html#a8000e722ce864bbfbce0f303f39186d7">NvFlexExtInstance::userData</a></div><div class="ttdeci">void * userData</div><div class="ttdoc">User data pointer. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:359</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a89ea7bbd26bec46f1b82d84257de1f58"><div class="ttname"><a href="_nv_flex_ext_8h.html#a89ea7bbd26bec46f1b82d84257de1f58">NvFlexExtPullFromDevice</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtPullFromDevice(NvFlexExtContainer *container)</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_a36a3fd5e42c5d8005f72bcc43217cf37"><div class="ttname"><a href="struct_nv_flex_vector.html#a36a3fd5e42c5d8005f72bcc43217cf37">NvFlexVector::resize</a></div><div class="ttdeci">void resize(int newCount, const T &val)</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:210</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_aeee311155e99ce95c506078964a7dc3c"><div class="ttname"><a href="_nv_flex_ext_8h.html#aeee311155e99ce95c506078964a7dc3c">NvFlexExtAsset::triangleIndices</a></div><div class="ttdeci">int * triangleIndices</div><div class="ttdoc">Indexed triangle mesh indices for clothing. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:332</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_ac28b5fd10fd519265c66cf4a0ce8e6ae"><div class="ttname"><a href="struct_nv_flex_vector.html#ac28b5fd10fd519265c66cf4a0ce8e6ae">NvFlexVector::capacity</a></div><div class="ttdeci">int capacity</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:75</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a1a0c7a0c03148b1586c4fb48f14a565f"><div class="ttname"><a href="_nv_flex_ext_8h.html#a1a0c7a0c03148b1586c4fb48f14a565f">NvFlexExtInstance::particleIndices</a></div><div class="ttdeci">int * particleIndices</div><div class="ttdoc">Simulation particle indices. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:347</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a7ad225a762dcf91b7155c7229dd08d38"><div class="ttname"><a href="_nv_flex_ext_8h.html#a7ad225a762dcf91b7155c7229dd08d38">NvFlexExtForceField::mRadius</a></div><div class="ttdeci">float mRadius</div><div class="ttdoc">Radius of the force field. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:726</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_ad858d4df98a4300668f2b8048881c0d5"><div class="ttname"><a href="_nv_flex_ext_8h.html#ad858d4df98a4300668f2b8048881c0d5">NvFlexExtAsset::numTriangles</a></div><div class="ttdeci">int numTriangles</div><div class="ttdoc">Number of triangles. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:333</div></div> +<div class="ttc" id="_nv_flex_8h_html_a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6"><div class="ttname"><a href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">eNvFlexMapWait</a></div><div class="ttdoc">Calling thread will be blocked until buffer is ready for access, default. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:69</div></div> +<div class="ttc" id="_nv_flex_8h_html_afaeb57f4ee7e54b1ae1b912a465ed39e"><div class="ttname"><a href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a></div><div class="ttdeci">struct NvFlexSolver NvFlexSolver</div><div class="ttdef"><b>Definition:</b> NvFlex.h:57</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a8bef033b2a8567dfcc954e22534147ee"><div class="ttname"><a href="_nv_flex_ext_8h.html#a8bef033b2a8567dfcc954e22534147ee">NvFlexExtCreateClothFromMesh</a></div><div class="ttdeci">NV_FLEX_API NvFlexExtAsset * NvFlexExtCreateClothFromMesh(const float *particles, int numParticles, const int *indices, int numTriangles, float stretchStiffness, float bendStiffness, float tetherStiffness, float tetherGive, float pressure)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_struct_nv_flex_ext_force_field"><div class="ttname"><a href="_nv_flex_ext_8h.html#struct_nv_flex_ext_force_field">NvFlexExtForceField</a></div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:723</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a4810f46c27fd0cfacfb1f4be9dff0479"><div class="ttname"><a href="_nv_flex_ext_8h.html#a4810f46c27fd0cfacfb1f4be9dff0479">NvFlexExtAsset::numShapeIndices</a></div><div class="ttdeci">int numShapeIndices</div><div class="ttdoc">Total number of indices for shape constraints. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:325</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a88054283907d3386f1a30cdc4475acb0"><div class="ttname"><a href="_nv_flex_ext_8h.html#a88054283907d3386f1a30cdc4475acb0">NvFlexExtDestroyTearingCloth</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtDestroyTearingCloth(NvFlexExtAsset *asset)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a6517fee9c5e151673ecd5ad91cbf2ae2"><div class="ttname"><a href="_nv_flex_ext_8h.html#a6517fee9c5e151673ecd5ad91cbf2ae2">NvFlexExtShapeData::rotations</a></div><div class="ttdeci">float * rotations</div><div class="ttdoc">Receives a pointer to the array quaternion rotation data in [x, y z, w] format. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:603</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a7fc268a27306f6fc68dd1c106cfa62db"><div class="ttname"><a href="_nv_flex_ext_8h.html#a7fc268a27306f6fc68dd1c106cfa62db">NvFlexExtGetActiveList</a></div><div class="ttdeci">NV_FLEX_API int NvFlexExtGetActiveList(NvFlexExtContainer *container, int *indices)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_aa67489d3beb86e2b566e0fa2e978ed11"><div class="ttname"><a href="_nv_flex_ext_8h.html#aa67489d3beb86e2b566e0fa2e978ed11">NvFlexExtInstance::shapeIndex</a></div><div class="ttdeci">int shapeIndex</div><div class="ttdoc">Index in the container's shape body constraints array. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:351</div></div> +<div class="ttc" id="struct_nv_flex_vector_html"><div class="ttname"><a href="struct_nv_flex_vector.html">NvFlexVector</a></div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:45</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_ad08da77f432ca56bc59647bf73da86cb"><div class="ttname"><a href="_nv_flex_ext_8h.html#ad08da77f432ca56bc59647bf73da86cb">NvFlexExtDestroyForceFieldCallback</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtDestroyForceFieldCallback(NvFlexExtForceFieldCallback *callback)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a0898bb9210440b159688d4647f6eb083"><div class="ttname"><a href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap</a></div><div class="ttdeci">NV_FLEX_API void * NvFlexMap(NvFlexBuffer *buffer, int flags)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a8b7a9bd9cbd2f33c6b3da02687a6bd9d"><div class="ttname"><a href="_nv_flex_ext_8h.html#a8b7a9bd9cbd2f33c6b3da02687a6bd9d">NvFlexExtAsset::springIndices</a></div><div class="ttdeci">int * springIndices</div><div class="ttdoc">Spring indices. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:318</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_ae0e6ce694fb95a50c2974c6c2cc0ffc8"><div class="ttname"><a href="struct_nv_flex_vector.html#ae0e6ce694fb95a50c2974c6c2cc0ffc8">NvFlexVector::reserve</a></div><div class="ttdeci">void reserve(int minCapacity)</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:173</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_afb9c0f47544c0cdebe21efb6908dd3a0"><div class="ttname"><a href="struct_nv_flex_vector.html#afb9c0f47544c0cdebe21efb6908dd3a0">NvFlexVector::~NvFlexVector</a></div><div class="ttdeci">~NvFlexVector()</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:65</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_ab421c4d72574f468af6827c18c36a387"><div class="ttname"><a href="_nv_flex_ext_8h.html#ab421c4d72574f468af6827c18c36a387">NvFlexExtAsset::maxParticles</a></div><div class="ttdeci">int maxParticles</div><div class="ttdoc">Maximum number of particles, allows extra space for tearable assets which duplicate particles...</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:315</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_a98584303358b70fd12ead231cd750335"><div class="ttname"><a href="struct_nv_flex_vector.html#a98584303358b70fd12ead231cd750335">NvFlexVector::push_back</a></div><div class="ttdeci">void push_back(const T &t)</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:135</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a2509137d9fb8ab6818f35ab7761da7a5"><div class="ttname"><a href="_nv_flex_ext_8h.html#a2509137d9fb8ab6818f35ab7761da7a5">NvFlexExtDestroyContainer</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtDestroyContainer(NvFlexExtContainer *container)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_aab0ea63bac05cd6aee5054d369687fb0"><div class="ttname"><a href="_nv_flex_ext_8h.html#aab0ea63bac05cd6aee5054d369687fb0">NvFlexExtMovingFrame::tau</a></div><div class="ttdeci">float tau[3]</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:239</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a95fbd8d303fe90992b95b63a29eb5344"><div class="ttname"><a href="_nv_flex_ext_8h.html#a95fbd8d303fe90992b95b63a29eb5344">NvFlexExtMovingFrame::omega</a></div><div class="ttdeci">float omega[3]</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:236</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a6e3f12e9e92abb31b115cf31b33e34bb"><div class="ttname"><a href="_nv_flex_ext_8h.html#a6e3f12e9e92abb31b115cf31b33e34bb">NvFlexExtCreateSoftMeshSkinning</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtCreateSoftMeshSkinning(const float *vertices, int numVertices, const float *bones, int numBones, float falloff, float maxDistance, float *skinningWeights, int *skinningIndices)</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_a73f78b1efc76c96666a96a79064670c5"><div class="ttname"><a href="struct_nv_flex_vector.html#a73f78b1efc76c96666a96a79064670c5">NvFlexVector::empty</a></div><div class="ttdeci">bool empty() const </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:163</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_struct_nv_flex_ext_tearing_mesh_edit"><div class="ttname"><a href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_mesh_edit">NvFlexExtTearingMeshEdit</a></div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:441</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a49906c9e3466d40383cddf627fe26658"><div class="ttname"><a href="_nv_flex_ext_8h.html#a49906c9e3466d40383cddf627fe26658">NvFlexExtCreateContainer</a></div><div class="ttdeci">NV_FLEX_API NvFlexExtContainer * NvFlexExtCreateContainer(NvFlexLibrary *lib, NvFlexSolver *solver, int maxParticles)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a3bf10e2c9370602142b7be01e920f973"><div class="ttname"><a href="_nv_flex_ext_8h.html#a3bf10e2c9370602142b7be01e920f973">NvFlexExtCreateInstance</a></div><div class="ttdeci">NV_FLEX_API NvFlexExtInstance * NvFlexExtCreateInstance(NvFlexExtContainer *container, NvFlexExtParticleData *particleData, const NvFlexExtAsset *asset, const float *transform, float vx, float vy, float vz, int phase, float invMassScale)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_ad1af111e19f7ca92fd913c25c4d9288b"><div class="ttname"><a href="_nv_flex_ext_8h.html#ad1af111e19f7ca92fd913c25c4d9288b">NvFlexExtMovingFrame::rotation</a></div><div class="ttdeci">float rotation[4]</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:233</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a3fc55581814cbab90a0c4167428893df"><div class="ttname"><a href="_nv_flex_ext_8h.html#a3fc55581814cbab90a0c4167428893df">NvFlexExtAsset::inflatableVolume</a></div><div class="ttdeci">float inflatableVolume</div><div class="ttdoc">The rest volume for the inflatable constraint. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:337</div></div> +<div class="ttc" id="_nv_flex_8h_html_a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8"><div class="ttname"><a href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8">eNvFlexBufferHost</a></div><div class="ttdoc">Host mappable buffer, pinned memory on CUDA, staging buffer on DX. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:79</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_ab51f04114586b5bf0f6fc5816fda9c69"><div class="ttname"><a href="_nv_flex_ext_8h.html#ab51f04114586b5bf0f6fc5816fda9c69">NvFlexExtUnmapShapeData</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtUnmapShapeData(NvFlexExtContainer *container)</div></div> +<div class="ttc" id="_nv_flex_8h_html_a50a3933d3f7b77d0500c702b1fa9ba9a"><div class="ttname"><a href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a></div><div class="ttdeci">struct NvFlexBuffer NvFlexBuffer</div><div class="ttdef"><b>Definition:</b> NvFlex.h:62</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a90f2d3ba5be20e70e7efead911ee7acc"><div class="ttname"><a href="_nv_flex_ext_8h.html#a90f2d3ba5be20e70e7efead911ee7acc">NvFlexExtMapShapeData</a></div><div class="ttdeci">NV_FLEX_API NvFlexExtShapeData NvFlexExtMapShapeData(NvFlexExtContainer *container)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a502acd5c1db4ba6eef61eba25f26d68ea92265f22fc2a724baf640fdace8f8ea0"><div class="ttname"><a href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea92265f22fc2a724baf640fdace8f8ea0">eNvFlexExtModeImpulse</a></div><div class="ttdoc">Apply field value as an impulse. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:714</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a780c0bac62cc5dd8d04da11cff07eeba"><div class="ttname"><a href="_nv_flex_ext_8h.html#a780c0bac62cc5dd8d04da11cff07eeba">NvFlexExtParticleData::particles</a></div><div class="ttdeci">float * particles</div><div class="ttdoc">Receives a pointer to the particle position / mass data. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:564</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a1e8252d5e5f66b3d8920c1371f23cc05"><div class="ttname"><a href="_nv_flex_ext_8h.html#a1e8252d5e5f66b3d8920c1371f23cc05">NvFlexExtAsset::springCoefficients</a></div><div class="ttdeci">float * springCoefficients</div><div class="ttdoc">Spring coefficients. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:319</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a69962fe23c7fef594fb5f36a175ff148"><div class="ttname"><a href="_nv_flex_ext_8h.html#a69962fe23c7fef594fb5f36a175ff148">NvFlexExtParticleData::restParticles</a></div><div class="ttdeci">float * restParticles</div><div class="ttdoc">Receives a pointer to the particle's rest position (used for self collision culling) ...</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:565</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_acd73f347463a114da73bb1ab5eff00b4"><div class="ttname"><a href="_nv_flex_ext_8h.html#acd73f347463a114da73bb1ab5eff00b4">NvFlexExtShapeData::positions</a></div><div class="ttdeci">float * positions</div><div class="ttdoc">Receives a pointer to an array of shape body translations in [x, y, z] format. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:604</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_struct_nv_flex_ext_moving_frame"><div class="ttname"><a href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a></div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:230</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_a3871fbd5422c9b3f41bd5dc2046e1aa7"><div class="ttname"><a href="struct_nv_flex_vector.html#a3871fbd5422c9b3f41bd5dc2046e1aa7">NvFlexVector::operator[]</a></div><div class="ttdeci">const T & operator[](int index) const </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:119</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_afca9914468beb61f6c98bc052e2af5e0"><div class="ttname"><a href="struct_nv_flex_vector.html#afca9914468beb61f6c98bc052e2af5e0">NvFlexVector::unmap</a></div><div class="ttdeci">void unmap()</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:108</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_struct_nv_flex_ext_instance"><div class="ttname"><a href="_nv_flex_ext_8h.html#struct_nv_flex_ext_instance">NvFlexExtInstance</a></div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:345</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a4695d37db8b61495f200bfd88a2be628"><div class="ttname"><a href="_nv_flex_ext_8h.html#a4695d37db8b61495f200bfd88a2be628">NvFlexExtUpdateInstances</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtUpdateInstances(NvFlexExtContainer *container)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a9e6134ffeca22636dcd467fa4dee1ba0"><div class="ttname"><a href="_nv_flex_ext_8h.html#a9e6134ffeca22636dcd467fa4dee1ba0">NvFlexExtForceField::mPosition</a></div><div class="ttdeci">float mPosition[3]</div><div class="ttdoc">Center of force field. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:725</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a806a707d6b32c41ab561a4893f43ddde"><div class="ttname"><a href="_nv_flex_ext_8h.html#a806a707d6b32c41ab561a4893f43ddde">NvFlexExtTriangleData::indices</a></div><div class="ttdeci">int * indices</div><div class="ttdoc">Receives a pointer to the array of triangle index data. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:585</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a56bf3b1fe603c79b871ead2efb65cc78"><div class="ttname"><a href="_nv_flex_ext_8h.html#a56bf3b1fe603c79b871ead2efb65cc78">NvFlexExtTriangleData::normals</a></div><div class="ttdeci">float * normals</div><div class="ttdoc">Receives a pointer to an array of triangle normal data stored with 16 byte stride, i.e.: [nx, ny, nz]. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:586</div></div> +<div class="ttc" id="_nv_flex_8h_html"><div class="ttname"><a href="_nv_flex_8h.html">NvFlex.h</a></div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a5efc0113d5432eb959437e6e3a98cc5f"><div class="ttname"><a href="_nv_flex_ext_8h.html#a5efc0113d5432eb959437e6e3a98cc5f">NvFlexExtTearClothMesh</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtTearClothMesh(NvFlexExtAsset *asset, float maxStrain, int maxSplits, NvFlexExtTearingParticleClone *particleCopies, int *numParticleCopies, int maxCopies, NvFlexExtTearingMeshEdit *triangleEdits, int *numTriangleEdits, int maxEdits)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a0705c9d2b5960057b37f097083d96f33"><div class="ttname"><a href="_nv_flex_ext_8h.html#a0705c9d2b5960057b37f097083d96f33">NvFlexExtMovingFrame::acceleration</a></div><div class="ttdeci">float acceleration[3]</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:238</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a502acd5c1db4ba6eef61eba25f26d68ea9d4e8413b628837f9d1982897fd1f4a2"><div class="ttname"><a href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea9d4e8413b628837f9d1982897fd1f4a2">eNvFlexExtModeForce</a></div><div class="ttdoc">Apply field value as a force. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:711</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_ad4d5551b97bd31b9e1ca5c57f2c82452"><div class="ttname"><a href="_nv_flex_ext_8h.html#ad4d5551b97bd31b9e1ca5c57f2c82452">NvFlexExtAsset::inflatableStiffness</a></div><div class="ttdeci">float inflatableStiffness</div><div class="ttdoc">How stiff the inflatable is. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:339</div></div> +<div class="ttc" id="_nv_flex_8h_html_a3078976e98f370a9fbdb11db80f1f318"><div class="ttname"><a href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a></div><div class="ttdeci">struct NvFlexLibrary NvFlexLibrary</div><div class="ttdef"><b>Definition:</b> NvFlex.h:52</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a46b80c02097ebc40bf777708e8f17ed4"><div class="ttname"><a href="_nv_flex_ext_8h.html#a46b80c02097ebc40bf777708e8f17ed4">NvFlexExtTearingMeshEdit::triIndex</a></div><div class="ttdeci">int triIndex</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:443</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_afcacbd584e2041855af50eae3f287779"><div class="ttname"><a href="_nv_flex_ext_8h.html#afcacbd584e2041855af50eae3f287779">NvFlexExtParticleData::normals</a></div><div class="ttdeci">float * normals</div><div class="ttdoc">Receives a pointer to the particle normal data with 16 byte stride in format [nx, ny...</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:568</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a1646bf409084777cd0ff5d4fcccf07de"><div class="ttname"><a href="_nv_flex_ext_8h.html#a1646bf409084777cd0ff5d4fcccf07de">NvFlexExtMapTriangleData</a></div><div class="ttdeci">NV_FLEX_API NvFlexExtTriangleData NvFlexExtMapTriangleData(NvFlexExtContainer *container)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a9034efff0f1b158a12a9ed6991d620fa"><div class="ttname"><a href="_nv_flex_ext_8h.html#a9034efff0f1b158a12a9ed6991d620fa">NvFlexExtTearingParticleClone::destIndex</a></div><div class="ttdeci">int destIndex</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:431</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a0b9729f9896faba45c861a1e8d15290b"><div class="ttname"><a href="_nv_flex_ext_8h.html#a0b9729f9896faba45c861a1e8d15290b">NvFlexExtForceField::mStrength</a></div><div class="ttdeci">float mStrength</div><div class="ttdoc">Strength of the force field. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:727</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a7d35ea2def3a05a5f85a5cdfd5abdc56"><div class="ttname"><a href="_nv_flex_ext_8h.html#a7d35ea2def3a05a5f85a5cdfd5abdc56">NvFlexExtMovingFrame::position</a></div><div class="ttdeci">float position[3]</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:232</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_a6c4a1f4acb4d6275c9e1ac01d4e35ab1"><div class="ttname"><a href="struct_nv_flex_vector.html#a6c4a1f4acb4d6275c9e1ac01d4e35ab1">NvFlexVector::resize</a></div><div class="ttdeci">void resize(int newCount)</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:200</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_struct_nv_flex_ext_asset"><div class="ttname"><a href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a></div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:310</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a425f4e472bb83797498c904ab228209c"><div class="ttname"><a href="_nv_flex_ext_8h.html#a425f4e472bb83797498c904ab228209c">NvFlexExtPushToDevice</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtPushToDevice(NvFlexExtContainer *container)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a1117ce527b6b483cc756ab5352f6dc3f"><div class="ttname"><a href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a></div><div class="ttdeci">struct NvFlexExtForceFieldCallback NvFlexExtForceFieldCallback</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:736</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_ad462ae46f0270161c79572762b558124"><div class="ttname"><a href="struct_nv_flex_vector.html#ad462ae46f0270161c79572762b558124">NvFlexVector::count</a></div><div class="ttdeci">int count</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:74</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a502acd5c1db4ba6eef61eba25f26d68e"><div class="ttname"><a href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68e">NvFlexExtForceMode</a></div><div class="ttdeci">NvFlexExtForceMode</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:708</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a0fd9407aad5001d3a9fe90e989da1aad"><div class="ttname"><a href="_nv_flex_ext_8h.html#a0fd9407aad5001d3a9fe90e989da1aad">NvFlexExtAsset::shapeCoefficients</a></div><div class="ttdeci">float * shapeCoefficients</div><div class="ttdoc">The stiffness coefficient for each shape. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:327</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_a56640fd10b06a4024a4bf01c306c436b"><div class="ttname"><a href="struct_nv_flex_vector.html#a56640fd10b06a4024a4bf01c306c436b">NvFlexVector::map</a></div><div class="ttdeci">void map(int flags=eNvFlexMapWait)</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:99</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a502acd5c1db4ba6eef61eba25f26d68ea6a2e4817b1e86764147c81e8d5e5070c"><div class="ttname"><a href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea6a2e4817b1e86764147c81e8d5e5070c">eNvFlexExtModeVelocityChange</a></div><div class="ttdoc">Apply field value as a velocity change. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:717</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_addad82b3598059ffde7b3b5babe17bd4"><div class="ttname"><a href="_nv_flex_ext_8h.html#addad82b3598059ffde7b3b5babe17bd4">NvFlexExtCreateTearingClothFromMesh</a></div><div class="ttdeci">NV_FLEX_API NvFlexExtAsset * NvFlexExtCreateTearingClothFromMesh(const float *particles, int numParticles, int maxParticles, const int *indices, int numTriangles, float stretchStiffness, float bendStiffness, float pressure)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_struct_nv_flex_ext_shape_data"><div class="ttname"><a href="_nv_flex_ext_8h.html#struct_nv_flex_ext_shape_data">NvFlexExtShapeData</a></div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:601</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a6a20d814e3b083b069daa0f20a3e756e"><div class="ttname"><a href="_nv_flex_ext_8h.html#a6a20d814e3b083b069daa0f20a3e756e">NvFlexExtMovingFrameInit</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtMovingFrameInit(NvFlexExtMovingFrame *frame, const float *worldTranslation, const float *worldRotation)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_ab556b9c29acfda73e14c68edc43be7e3"><div class="ttname"><a href="_nv_flex_ext_8h.html#ab556b9c29acfda73e14c68edc43be7e3">NvFlexExtAsset::inflatablePressure</a></div><div class="ttdeci">float inflatablePressure</div><div class="ttdoc">How much over the rest volume the inflatable should attempt to maintain. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:338</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_ad722c319fe60d8a0933df217ba04b2ac"><div class="ttname"><a href="_nv_flex_ext_8h.html#ad722c319fe60d8a0933df217ba04b2ac">NvFlexExtParticleData::upper</a></div><div class="ttdeci">const float * upper</div><div class="ttdoc">Receive a pointer to the particle upper bounds [x, y, z]. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:571</div></div> +<div class="ttc" id="_nv_flex_8h_html_ad48f83b8442323687d2268206e913496"><div class="ttname"><a href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer</a></div><div class="ttdeci">NV_FLEX_API NvFlexBuffer * NvFlexAllocBuffer(NvFlexLibrary *lib, int elementCount, int elementByteStride, NvFlexBufferType type)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_ac2ef832cadd91e257ba80eb97d936340"><div class="ttname"><a href="_nv_flex_ext_8h.html#ac2ef832cadd91e257ba80eb97d936340">NvFlexExtInstance::inflatableIndex</a></div><div class="ttdeci">int inflatableIndex</div><div class="ttdoc">Index in the container's inflatables array. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:352</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_a9d7ff86aeebc0fcfa5c125d7872e2e3b"><div class="ttname"><a href="struct_nv_flex_vector.html#a9d7ff86aeebc0fcfa5c125d7872e2e3b">NvFlexVector::NvFlexVector</a></div><div class="ttdeci">NvFlexVector(NvFlexLibrary *l, int size=0)</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:47</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_ab0a259d159116b7fba9b229784b02c70"><div class="ttname"><a href="_nv_flex_ext_8h.html#ab0a259d159116b7fba9b229784b02c70">NvFlexExtFreeParticles</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtFreeParticles(NvFlexExtContainer *container, int n, const int *indices)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a8a4a122a0a95b8262fc4673298a5cb1c"><div class="ttname"><a href="_nv_flex_ext_8h.html#a8a4a122a0a95b8262fc4673298a5cb1c">NvFlexExtAsset::shapeIndices</a></div><div class="ttdeci">int * shapeIndices</div><div class="ttdoc">The indices of the shape matching constraints. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:324</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a82a15dfd40b338a07cf4517f55f16720"><div class="ttname"><a href="_nv_flex_ext_8h.html#a82a15dfd40b338a07cf4517f55f16720">NvFlexExtCreateWeldedMeshIndices</a></div><div class="ttdeci">NV_FLEX_API int NvFlexExtCreateWeldedMeshIndices(const float *vertices, int numVertices, int *uniqueVerts, int *originalToUniqueMap, float threshold)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a3fa8bd4b7d4096602e611faf0bb62dfb"><div class="ttname"><a href="_nv_flex_ext_8h.html#a3fa8bd4b7d4096602e611faf0bb62dfb">NvFlexExtMapParticleData</a></div><div class="ttdeci">NV_FLEX_API NvFlexExtParticleData NvFlexExtMapParticleData(NvFlexExtContainer *container)</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_acd29b9b2b27e53e3640c24da6959e3cd"><div class="ttname"><a href="struct_nv_flex_vector.html#acd29b9b2b27e53e3640c24da6959e3cd">NvFlexVector::assign</a></div><div class="ttdeci">void assign(const T *srcPtr, int newCount)</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:145</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_aa4f19c17fa4ae35ceda90c8b3d1fcca4"><div class="ttname"><a href="_nv_flex_ext_8h.html#aa4f19c17fa4ae35ceda90c8b3d1fcca4">NvFlexExtInstance::asset</a></div><div class="ttdeci">const NvFlexExtAsset * asset</div><div class="ttdoc">Source asset used to create this instance. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:357</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_aa4422fcaa24d5bbd71aa7772639512b9"><div class="ttname"><a href="struct_nv_flex_vector.html#aa4422fcaa24d5bbd71aa7772639512b9">NvFlexVector::mappedPtr</a></div><div class="ttdeci">T * mappedPtr</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:73</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_ae03f4690a66ba4e06e4b2519c688aaba"><div class="ttname"><a href="_nv_flex_ext_8h.html#ae03f4690a66ba4e06e4b2519c688aaba">NvFlexExtMovingFrame::delta</a></div><div class="ttdeci">float delta[4][4]</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:241</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_af911b47ddb538a0542f6e2c38a82d701"><div class="ttname"><a href="_nv_flex_ext_8h.html#af911b47ddb538a0542f6e2c38a82d701">NvFlexExtParticleData::lower</a></div><div class="ttdeci">const float * lower</div><div class="ttdoc">Receive a pointer to the particle lower bounds [x, y, z]. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:570</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a3288fee0b909e9e768d9abc9b8da74cf"><div class="ttname"><a href="_nv_flex_ext_8h.html#a3288fee0b909e9e768d9abc9b8da74cf">NvFlexExtInstance::triangleIndex</a></div><div class="ttdeci">int triangleIndex</div><div class="ttdoc">Index in the container's triangle array. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:350</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_struct_nv_flex_ext_triangle_data"><div class="ttname"><a href="_nv_flex_ext_8h.html#struct_nv_flex_ext_triangle_data">NvFlexExtTriangleData</a></div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:583</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a3d7dba5a4d9fce7230bc20a8bb567951"><div class="ttname"><a href="_nv_flex_ext_8h.html#a3d7dba5a4d9fce7230bc20a8bb567951">NvFlexExtForceField::mMode</a></div><div class="ttdeci">NvFlexExtForceMode mMode</div><div class="ttdoc">Mode of field application. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:728</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a7c036ccca83df3659529858068e0593d"><div class="ttname"><a href="_nv_flex_ext_8h.html#a7c036ccca83df3659529858068e0593d">NvFlexExtAllocParticles</a></div><div class="ttdeci">NV_FLEX_API int NvFlexExtAllocParticles(NvFlexExtContainer *container, int n, int *indices)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a7fa35a822a4e856fee45b3263e679270"><div class="ttname"><a href="_nv_flex_ext_8h.html#a7fa35a822a4e856fee45b3263e679270">NvFlexExtParticleData::phases</a></div><div class="ttdeci">int * phases</div><div class="ttdoc">Receives a pointer to the particle phase data. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:567</div></div> +<div class="ttc" id="_nv_flex_8h_html_ab559759820a4322aff061745ef26c867"><div class="ttname"><a href="_nv_flex_8h.html#ab559759820a4322aff061745ef26c867">NvFlexFreeBuffer</a></div><div class="ttdeci">NV_FLEX_API void NvFlexFreeBuffer(NvFlexBuffer *buf)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_afc07cf2edbf4d5bf504890b312a98bd7"><div class="ttname"><a href="_nv_flex_ext_8h.html#afc07cf2edbf4d5bf504890b312a98bd7">NvFlexExtAsset::numShapes</a></div><div class="ttdeci">int numShapes</div><div class="ttdoc">The number of shape matching constraints. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:329</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a89e582ae93e0256b06f22d9abf361783"><div class="ttname"><a href="_nv_flex_ext_8h.html#a89e582ae93e0256b06f22d9abf361783">NvFlexExtUnmapTriangleData</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtUnmapTriangleData(NvFlexExtContainer *container)</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_a225da2c753ca0bb95b570c303f0cd761"><div class="ttname"><a href="struct_nv_flex_vector.html#a225da2c753ca0bb95b570c303f0cd761">NvFlexVector::copyto</a></div><div class="ttdeci">void copyto(T *dest, int count)</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:154</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a36c33fafe13c5fd5773bf9a2af2dd745"><div class="ttname"><a href="_nv_flex_ext_8h.html#a36c33fafe13c5fd5773bf9a2af2dd745">NvFlexExtDestroyAsset</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtDestroyAsset(NvFlexExtAsset *asset)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a431c97a2756c45752dd7508f0810a397"><div class="ttname"><a href="_nv_flex_ext_8h.html#a431c97a2756c45752dd7508f0810a397">NvFlexExtTearingParticleClone::srcIndex</a></div><div class="ttdeci">int srcIndex</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:430</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_aa6fb48cb1199af96a29de7616f7a4d18"><div class="ttname"><a href="_nv_flex_ext_8h.html#aa6fb48cb1199af96a29de7616f7a4d18">NvFlexExtInstance::shapeTranslations</a></div><div class="ttdeci">float * shapeTranslations</div><div class="ttdoc">Shape matching group translations (vec3s) </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:354</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_acc246770a0f65f1e50b43c618955dc84"><div class="ttname"><a href="_nv_flex_ext_8h.html#acc246770a0f65f1e50b43c618955dc84">NvFlexExtMovingFrame::velocity</a></div><div class="ttdeci">float velocity[3]</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:235</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_struct_nv_flex_ext_tearing_particle_clone"><div class="ttname"><a href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_particle_clone">NvFlexExtTearingParticleClone</a></div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:428</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_aa408aa5327d07f69fc12314df2d5dcfb"><div class="ttname"><a href="struct_nv_flex_vector.html#aa408aa5327d07f69fc12314df2d5dcfb">NvFlexVector::buffer</a></div><div class="ttdeci">NvFlexBuffer * buffer</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:71</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_adbb39b1f8b0705bb3e19d2cb6145640f"><div class="ttname"><a href="_nv_flex_ext_8h.html#adbb39b1f8b0705bb3e19d2cb6145640f">NvFlexExtParticleData::velocities</a></div><div class="ttdeci">float * velocities</div><div class="ttdoc">Receives a pointer to the particle velocity data. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:566</div></div> +<div class="ttc" id="struct_nv_flex_vector_html_a37fbf38300ea57635af4b60c934e9f46"><div class="ttname"><a href="struct_nv_flex_vector.html#a37fbf38300ea57635af4b60c934e9f46">NvFlexVector::back</a></div><div class="ttdeci">const T & back() const </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:165</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_ac1ed9ff49120d0691352399c8173bdcf"><div class="ttname"><a href="_nv_flex_ext_8h.html#ac1ed9ff49120d0691352399c8173bdcf">NvFlexExtCreateForceFieldCallback</a></div><div class="ttdeci">NV_FLEX_API NvFlexExtForceFieldCallback * NvFlexExtCreateForceFieldCallback(NvFlexSolver *solver)</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_a960073478e49b229d1d19ac64c5b23f7"><div class="ttname"><a href="_nv_flex_ext_8h.html#a960073478e49b229d1d19ac64c5b23f7">NvFlexExtAsset::inflatable</a></div><div class="ttdeci">bool inflatable</div><div class="ttdoc">Whether an inflatable constraint should be added. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:336</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_ae5f81891f59382b133319dc3bcea8ba0"><div class="ttname"><a href="_nv_flex_ext_8h.html#ae5f81891f59382b133319dc3bcea8ba0">NvFlexExtAsset::numSprings</a></div><div class="ttdeci">int numSprings</div><div class="ttdoc">Number of springs. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:321</div></div> +<div class="ttc" id="_nv_flex_ext_8h_html_ad9343d07f49098ee205a1ed48dc9db34"><div class="ttname"><a href="_nv_flex_ext_8h.html#ad9343d07f49098ee205a1ed48dc9db34">NvFlexExtNotifyAssetChanged</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtNotifyAssetChanged(NvFlexExtContainer *container, const NvFlexExtAsset *asset)</div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Wed Feb 22 2017 12:18:22 for FLEX by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.9.1 +</small></address> +</body> +</html> diff --git a/doc/_static/api/arrowdown.png b/doc/_static/api/arrowdown.png Binary files differnew file mode 100644 index 0000000..8257668 --- /dev/null +++ b/doc/_static/api/arrowdown.png diff --git a/doc/_static/api/arrowright.png b/doc/_static/api/arrowright.png Binary files differnew file mode 100644 index 0000000..4f2b45f --- /dev/null +++ b/doc/_static/api/arrowright.png diff --git a/doc/_static/api/bc_s.png b/doc/_static/api/bc_s.png Binary files differnew file mode 100644 index 0000000..7049183 --- /dev/null +++ b/doc/_static/api/bc_s.png diff --git a/doc/_static/api/bdwn.png b/doc/_static/api/bdwn.png Binary files differnew file mode 100644 index 0000000..ab6f2ab --- /dev/null +++ b/doc/_static/api/bdwn.png diff --git a/doc/_static/api/closed.png b/doc/_static/api/closed.png Binary files differnew file mode 100644 index 0000000..21f1c91 --- /dev/null +++ b/doc/_static/api/closed.png diff --git a/doc/_static/api/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/_static/api/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..e2f9475 --- /dev/null +++ b/doc/_static/api/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,60 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.9.1"/> +<title>FLEX: include Directory Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +<link href="flex.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">FLEX +  <span id="projectnumber">1.1.0</span> + </div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.9.1 --> +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">include Directory Reference</div> </div> +</div><!--header--> +<div class="contents"> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a> +Files</h2></td></tr> +<tr class="memitem:_nv_flex_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html">NvFlex.h</a> <a href="_nv_flex_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_nv_flex_device_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_device_8h.html">NvFlexDevice.h</a> <a href="_nv_flex_device_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_nv_flex_ext_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html">NvFlexExt.h</a> <a href="_nv_flex_ext_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Wed Feb 22 2017 12:18:22 for FLEX by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.9.1 +</small></address> +</body> +</html> diff --git a/doc/_static/api/doc.png b/doc/_static/api/doc.png Binary files differnew file mode 100644 index 0000000..7a7dcb7 --- /dev/null +++ b/doc/_static/api/doc.png diff --git a/doc/_static/api/doxygen.css b/doc/_static/api/doxygen.css new file mode 100644 index 0000000..b8ee746 --- /dev/null +++ b/doc/_static/api/doxygen.css @@ -0,0 +1,1449 @@ +/* The standard CSS for doxygen 1.8.9.1 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #A3BA98; + color: #526947; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #F0F3EE; + border: 1px solid #B9CAB0; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #5E7851; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #6D8B5D; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #B3C6AA; + color: #ffffff; + border: 1px double #A2B997; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 4px 6px; + margin: 4px 8px 4px 2px; + background-color: #FCFDFC; + border: 1px solid #D2DDCD; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #F0F3EE; + font-weight: bold; + border: 1px solid #D2DDCD; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #F0F3EE; + border: 1px solid #D2DDCD; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #F2F5F0; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F9FAF8; + border-left: 2px solid #B3C6AA; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #B9CAB0; +} + +th.dirtab { + background: #F0F3EE; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #729262; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #FAFBFA; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #6D8B5D; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #6D8B5D; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #F0F3EE; + border: 1px solid #B9CAB0; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #BCCDB4; + border-left: 1px solid #BCCDB4; + border-right: 1px solid #BCCDB4; + padding: 6px 0px 6px 0px; + color: #394931; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E9EEE6; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #BCCDB4; + border-left: 1px solid #BCCDB4; + border-right: 1px solid #BCCDB4; + padding: 6px 10px 2px 10px; + background-color: #FCFDFC; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #93AD86; + border-top:1px solid #7B9C6B; + border-left:1px solid #7B9C6B; + border-right:1px solid #D2DDCD; + border-bottom:1px solid #D2DDCD; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #B3C6AA; + border-bottom: 1px solid #B3C6AA; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F9FAF8; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #5E7851; +} + +.arrow { + color: #B3C6AA; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #93AD86; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #415438; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #45593C; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #556D49; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #BCCDB4; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #BCCDB4; + border-bottom: 1px solid #BCCDB4; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #BCCDB4; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E9EEE6; + font-size: 90%; + color: #394931; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #BCCDB4; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#A5BB9A; + border:solid 1px #D0DCCB; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#536B48; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #3E5035; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#8BA87D; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#536B48; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #FAFBFA; + margin: 0px; + border-bottom: 1px solid #D2DDCD; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #7B9C6B; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #AABFA0; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#4E6443; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F7F9F6; + border: 1px solid #E1E8DE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 20px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #6D8B5D; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + diff --git a/doc/_static/api/doxygen.png b/doc/_static/api/doxygen.png Binary files differnew file mode 100644 index 0000000..51a8bd0 --- /dev/null +++ b/doc/_static/api/doxygen.png diff --git a/doc/_static/api/dynsections.js b/doc/_static/api/dynsections.js new file mode 100644 index 0000000..85e1836 --- /dev/null +++ b/doc/_static/api/dynsections.js @@ -0,0 +1,97 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l<level+1) { + i.removeClass('iconfopen iconfclosed').addClass('iconfopen'); + a.html('▼'); + $(this).show(); + } else if (l==level+1) { + i.removeClass('iconfclosed iconfopen').addClass('iconfclosed'); + a.html('►'); + $(this).show(); + } else { + $(this).hide(); + } + }); + updateStripes(); +} + +function toggleFolder(id) +{ + // the clicked row + var currentRow = $('#row_'+id); + + // all rows after the clicked row + var rows = currentRow.nextAll("tr"); + + var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub + + // only match elements AFTER this one (can't hide elements before) + var childRows = rows.filter(function() { return this.id.match(re); }); + + // first row is visible we are HIDING + if (childRows.filter(':first').is(':visible')===true) { + // replace down arrow by right arrow for current row + var currentRowSpans = currentRow.find("span"); + currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed"); + currentRowSpans.filter(".arrow").html('►'); + rows.filter("[id^=row_"+id+"]").hide(); // hide all children + } else { // we are SHOWING + // replace right arrow by down arrow for current row + var currentRowSpans = currentRow.find("span"); + currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen"); + currentRowSpans.filter(".arrow").html('▼'); + // replace down arrows by right arrows for child rows + var childRowsSpans = childRows.find("span"); + childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed"); + childRowsSpans.filter(".arrow").html('►'); + childRows.show(); //show all children + } + updateStripes(); +} + + +function toggleInherit(id) +{ + var rows = $('tr.inherit.'+id); + var img = $('tr.inherit_header.'+id+' img'); + var src = $(img).attr('src'); + if (rows.filter(':first').is(':visible')===true) { + rows.css('display','none'); + $(img).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + rows.css('display','table-row'); // using show() causes jump in firefox + $(img).attr('src',src.substring(0,src.length-10)+'open.png'); + } +} + diff --git a/doc/_static/api/files.html b/doc/_static/api/files.html new file mode 100644 index 0000000..53ff079 --- /dev/null +++ b/doc/_static/api/files.html @@ -0,0 +1,53 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.9.1"/> +<title>FLEX: File List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +<link href="flex.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">FLEX +  <span id="projectnumber">1.1.0</span> + </div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.9.1 --> +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">File List</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory"> +<table class="directory"> +<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="_nv_flex_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_nv_flex_8h.html" target="_self">NvFlex.h</a></td><td class="desc"></td></tr> +<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="_nv_flex_device_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_nv_flex_device_8h.html" target="_self">NvFlexDevice.h</a></td><td class="desc"></td></tr> +<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="_nv_flex_ext_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_nv_flex_ext_8h.html" target="_self">NvFlexExt.h</a></td><td class="desc"></td></tr> +</table> +</div><!-- directory --> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Wed Feb 22 2017 12:18:22 for FLEX by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.9.1 +</small></address> +</body> +</html> diff --git a/doc/_static/api/flex.css b/doc/_static/api/flex.css new file mode 100644 index 0000000..7a8c916 --- /dev/null +++ b/doc/_static/api/flex.css @@ -0,0 +1,67 @@ +body { + width: 800px; +} + +body, table, div, p, dl, li{ + font-size: 11pt; + line-height: 1.4; +} + +h1, h2, h3 { + border-bottom-width: 1px; + border-bottom-style: solid; + border-bottom-color: rgb(238, 238, 238); + line-height: 1.4; +} + +a { + font-weight: normal; + text-decoration: none; +} + +.caption { +font-weight: bold; +margin-bottom: 2em; +} + +.doxtable { + width: 80%; + table-layout: fixed; +} + + +#projectlogo img { + width: 250px; +} + + +.fieldname { + font-weight: bold; + background-color: rgb(240, 240, 240); +} + +.fieldtype { + background-color: rgb(230, 230, 230); +} + +.fielddoc { + background-color: rgb(250, 250, 250); +} + + +li { + margin-bottom: 9pt; +} + +.level1, .level2, .level3, .level4 { + margin-bottom: 0pt; +} + + +div.line { + font-family: courier, fixed; +} + +div.image img { + width:100%; +}
\ No newline at end of file diff --git a/doc/_static/api/folderclosed.png b/doc/_static/api/folderclosed.png Binary files differnew file mode 100644 index 0000000..bf1b273 --- /dev/null +++ b/doc/_static/api/folderclosed.png diff --git a/doc/_static/api/folderopen.png b/doc/_static/api/folderopen.png Binary files differnew file mode 100644 index 0000000..fcd679e --- /dev/null +++ b/doc/_static/api/folderopen.png diff --git a/doc/_static/api/globals.html b/doc/_static/api/globals.html new file mode 100644 index 0000000..42e1ec0 --- /dev/null +++ b/doc/_static/api/globals.html @@ -0,0 +1,530 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.9.1"/> +<title>FLEX: Globals</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +<link href="flex.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">FLEX +  <span id="projectnumber">1.1.0</span> + </div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.9.1 --> +</div><!-- top --> +<div class="contents"> +<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div> + +<h3><a class="anchor" id="index_e"></a>- e -</h3><ul> +<li>eNvFlexBufferDevice +: <a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3a103255fa795b55a7f430a41493002576">NvFlex.h</a> +</li> +<li>eNvFlexBufferHost +: <a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8">NvFlex.h</a> +</li> +<li>eNvFlexCUDA +: <a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252ad0c27f7aafdc4fe569722025c8eb2178">NvFlex.h</a> +</li> +<li>eNvFlexD3D11 +: <a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a297a93979a88fda6e6b551dcab5fb3df">NvFlex.h</a> +</li> +<li>eNvFlexD3D12 +: <a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a15e78a7baf13cc7fd73f255ac84f0943">NvFlex.h</a> +</li> +<li>eNvFlexExtModeForce +: <a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea9d4e8413b628837f9d1982897fd1f4a2">NvFlexExt.h</a> +</li> +<li>eNvFlexExtModeImpulse +: <a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea92265f22fc2a724baf640fdace8f8ea0">NvFlexExt.h</a> +</li> +<li>eNvFlexExtModeVelocityChange +: <a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea6a2e4817b1e86764147c81e8d5e5070c">NvFlexExt.h</a> +</li> +<li>eNvFlexLogAll +: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8feff72c0b0391e8adf3ddb6c39ef10e">NvFlex.h</a> +</li> +<li>eNvFlexLogDebug +: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa77b51759e33d60b2caf327bb4835351e">NvFlex.h</a> +</li> +<li>eNvFlexLogError +: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8aed6496f033604148138299fa075edd">NvFlex.h</a> +</li> +<li>eNvFlexLogInfo +: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa03d239332ae87f46270855dd06b6e58f">NvFlex.h</a> +</li> +<li>eNvFlexLogWarning +: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa5538835c4767004ba5fd443ada08ea61">NvFlex.h</a> +</li> +<li>eNvFlexMapDiscard +: <a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16caa01c2dce3aa1e0d9d151060e1786c706">NvFlex.h</a> +</li> +<li>eNvFlexMapDoNotWait +: <a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca1bd450ab65ccc06288fae95e23d5e6f1">NvFlex.h</a> +</li> +<li>eNvFlexMapWait +: <a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">NvFlex.h</a> +</li> +<li>eNvFlexPhaseFluid +: <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a1728772beb1746ace4c549b2ed8f1d74">NvFlex.h</a> +</li> +<li>eNvFlexPhaseGroupMask +: <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644ad108f6ebf28346813cfd3602d984bb32">NvFlex.h</a> +</li> +<li>eNvFlexPhaseSelfCollide +: <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a453a23cc8e9d2e6097b5be187f3c6977">NvFlex.h</a> +</li> +<li>eNvFlexPhaseSelfCollideFilter +: <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a76a62d3a5df428f18e01f8b37573a7b1">NvFlex.h</a> +</li> +<li>eNvFlexRelaxationGlobal +: <a class="el" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba33711a4b466d606d68dee43918f819db">NvFlex.h</a> +</li> +<li>eNvFlexRelaxationLocal +: <a class="el" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba858afe9529e908c2bc8ce92da8943b7c">NvFlex.h</a> +</li> +<li>eNvFlexShapeBox +: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baab17c8dd4f9500016b77a9b49de3c48e7">NvFlex.h</a> +</li> +<li>eNvFlexShapeCapsule +: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1724c140b583fbf2c11c14a24dd3764a">NvFlex.h</a> +</li> +<li>eNvFlexShapeConvexMesh +: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baaed52f0e803c6745ffc1a5f018a8756ce">NvFlex.h</a> +</li> +<li>eNvFlexShapeFlagDynamic +: <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cadc6740cf6d829fba159d92e43ffb5992">NvFlex.h</a> +</li> +<li>eNvFlexShapeFlagReserved +: <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304caa1c1225f6b8b2906c83748cfc46b81d9">NvFlex.h</a> +</li> +<li>eNvFlexShapeFlagTrigger +: <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304ca409215fa9b917f2d0830a66bd11b3ff8">NvFlex.h</a> +</li> +<li>eNvFlexShapeFlagTypeMask +: <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cae8a10737948abf6973f0f1d66bae7ef8">NvFlex.h</a> +</li> +<li>eNvFlexShapeSDF +: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1fd78f8694b954f8d12fe7d911f17180">NvFlex.h</a> +</li> +<li>eNvFlexShapeSphere +: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baae22144512ae098865c6725af16a68ad3">NvFlex.h</a> +</li> +<li>eNvFlexShapeTriangleMesh +: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa315488da382a5e9794c83358385f7ae1">NvFlex.h</a> +</li> +<li>eNvFlexStageCount +: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a1f2e7acff9b3b74922f90240d29fd1b3">NvFlex.h</a> +</li> +<li>eNvFlexStageIterationEnd +: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9ab75a912c3990b0fbd6b06a6741a20e69">NvFlex.h</a> +</li> +<li>eNvFlexStageIterationStart +: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a9f3914fdb03915a14ebe55a2c730e7ff">NvFlex.h</a> +</li> +<li>eNvFlexStageSubstepBegin +: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a79ce9005dbc92198a1f180c6afde6a44">NvFlex.h</a> +</li> +<li>eNvFlexStageSubstepEnd +: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a6f13e2ebdbf21f8c8ebcfe1ac9160586">NvFlex.h</a> +</li> +<li>eNvFlexStageUpdateEnd +: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a260340ba9071892bd8795c3b29289806">NvFlex.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_n"></a>- n -</h3><ul> +<li>NvFlexAcquireContext() +: <a class="el" href="_nv_flex_8h.html#a42ec7b30c79d4733e6a756b5d9b15ee6">NvFlex.h</a> +</li> +<li>NvFlexAllocBuffer() +: <a class="el" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlex.h</a> +</li> +<li>NvFlexBuffer +: <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlex.h</a> +</li> +<li>NvFlexBufferType +: <a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3">NvFlex.h</a> +</li> +<li>NvFlexCollisionShapeFlags +: <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304c">NvFlex.h</a> +</li> +<li>NvFlexCollisionShapeType +: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26ba">NvFlex.h</a> +</li> +<li>NvFlexComputeType +: <a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252">NvFlex.h</a> +</li> +<li>NvFlexConvexMeshId +: <a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlex.h</a> +</li> +<li>NvFlexCreateConvexMesh() +: <a class="el" href="_nv_flex_8h.html#afbaafe2b1006352002b03aabaca531cc">NvFlex.h</a> +</li> +<li>NvFlexCreateDistanceField() +: <a class="el" href="_nv_flex_8h.html#a5c28caf6d5d513c5adacd4fbc782f308">NvFlex.h</a> +</li> +<li>NvFlexCreateSolver() +: <a class="el" href="_nv_flex_8h.html#af7f91fa47c779fcd8bee60061de6d31c">NvFlex.h</a> +</li> +<li>NvFlexCreateTriangleMesh() +: <a class="el" href="_nv_flex_8h.html#afdda5a5210938a1e8a7c3a8218ad468e">NvFlex.h</a> +</li> +<li>NvFlexDestroyConvexMesh() +: <a class="el" href="_nv_flex_8h.html#ac85b6372e5c7bfc508ecb7b8c59c72a0">NvFlex.h</a> +</li> +<li>NvFlexDestroyDistanceField() +: <a class="el" href="_nv_flex_8h.html#ab11bdd7f778d17af16cefea33265cb65">NvFlex.h</a> +</li> +<li>NvFlexDestroySolver() +: <a class="el" href="_nv_flex_8h.html#a1d755d7b090f7ed5c4c50d2d3fef1558">NvFlex.h</a> +</li> +<li>NvFlexDestroyTriangleMesh() +: <a class="el" href="_nv_flex_8h.html#a4cb4462803ebff105d151fd45b4efad6">NvFlex.h</a> +</li> +<li>NvFlexDeviceCreateCudaContext() +: <a class="el" href="_nv_flex_device_8h.html#a922c489035a9bdb84bee1cd0ef73558d">NvFlexDevice.h</a> +</li> +<li>NvFlexDeviceDestroyCudaContext() +: <a class="el" href="_nv_flex_device_8h.html#a97f4f513f226d573410478fa6d79f05a">NvFlexDevice.h</a> +</li> +<li>NvFlexDeviceGetSuggestedOrdinal() +: <a class="el" href="_nv_flex_device_8h.html#a914a7e6338379d00397bd3e7e07c0280">NvFlexDevice.h</a> +</li> +<li>NvFlexDistanceFieldId +: <a class="el" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlex.h</a> +</li> +<li>NvFlexErrorCallback +: <a class="el" href="_nv_flex_8h.html#abe6f00c9b94debbf7c181082a14076d5">NvFlex.h</a> +</li> +<li>NvFlexErrorSeverity +: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfca">NvFlex.h</a> +</li> +<li>NvFlexExtAllocParticles() +: <a class="el" href="_nv_flex_ext_8h.html#a7c036ccca83df3659529858068e0593d">NvFlexExt.h</a> +</li> +<li>NvFlexExtContainer +: <a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExt.h</a> +</li> +<li>NvFlexExtCreateClothFromMesh() +: <a class="el" href="_nv_flex_ext_8h.html#a8bef033b2a8567dfcc954e22534147ee">NvFlexExt.h</a> +</li> +<li>NvFlexExtCreateContainer() +: <a class="el" href="_nv_flex_ext_8h.html#a49906c9e3466d40383cddf627fe26658">NvFlexExt.h</a> +</li> +<li>NvFlexExtCreateForceFieldCallback() +: <a class="el" href="_nv_flex_ext_8h.html#ac1ed9ff49120d0691352399c8173bdcf">NvFlexExt.h</a> +</li> +<li>NvFlexExtCreateInstance() +: <a class="el" href="_nv_flex_ext_8h.html#a3bf10e2c9370602142b7be01e920f973">NvFlexExt.h</a> +</li> +<li>NvFlexExtCreateRigidFromMesh() +: <a class="el" href="_nv_flex_ext_8h.html#ad0a9c7e2f907e46b60f6bacf402987ce">NvFlexExt.h</a> +</li> +<li>NvFlexExtCreateSoftFromMesh() +: <a class="el" href="_nv_flex_ext_8h.html#a9f2c0daf521df4920e44cca1cb30b42c">NvFlexExt.h</a> +</li> +<li>NvFlexExtCreateSoftMeshSkinning() +: <a class="el" href="_nv_flex_ext_8h.html#a6e3f12e9e92abb31b115cf31b33e34bb">NvFlexExt.h</a> +</li> +<li>NvFlexExtCreateTearingClothFromMesh() +: <a class="el" href="_nv_flex_ext_8h.html#addad82b3598059ffde7b3b5babe17bd4">NvFlexExt.h</a> +</li> +<li>NvFlexExtCreateWeldedMeshIndices() +: <a class="el" href="_nv_flex_ext_8h.html#a82a15dfd40b338a07cf4517f55f16720">NvFlexExt.h</a> +</li> +<li>NvFlexExtDestroyAsset() +: <a class="el" href="_nv_flex_ext_8h.html#a36c33fafe13c5fd5773bf9a2af2dd745">NvFlexExt.h</a> +</li> +<li>NvFlexExtDestroyContainer() +: <a class="el" href="_nv_flex_ext_8h.html#a2509137d9fb8ab6818f35ab7761da7a5">NvFlexExt.h</a> +</li> +<li>NvFlexExtDestroyForceFieldCallback() +: <a class="el" href="_nv_flex_ext_8h.html#ad08da77f432ca56bc59647bf73da86cb">NvFlexExt.h</a> +</li> +<li>NvFlexExtDestroyInstance() +: <a class="el" href="_nv_flex_ext_8h.html#a2b5634f64bd0d8d86f894885a1c16a33">NvFlexExt.h</a> +</li> +<li>NvFlexExtDestroyTearingCloth() +: <a class="el" href="_nv_flex_ext_8h.html#a88054283907d3386f1a30cdc4475acb0">NvFlexExt.h</a> +</li> +<li>NvFlexExtForceFieldCallback +: <a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExt.h</a> +</li> +<li>NvFlexExtForceMode +: <a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68e">NvFlexExt.h</a> +</li> +<li>NvFlexExtFreeParticles() +: <a class="el" href="_nv_flex_ext_8h.html#ab0a259d159116b7fba9b229784b02c70">NvFlexExt.h</a> +</li> +<li>NvFlexExtGetActiveList() +: <a class="el" href="_nv_flex_ext_8h.html#a7fc268a27306f6fc68dd1c106cfa62db">NvFlexExt.h</a> +</li> +<li>NvFlexExtMapParticleData() +: <a class="el" href="_nv_flex_ext_8h.html#a3fa8bd4b7d4096602e611faf0bb62dfb">NvFlexExt.h</a> +</li> +<li>NvFlexExtMapShapeData() +: <a class="el" href="_nv_flex_ext_8h.html#a90f2d3ba5be20e70e7efead911ee7acc">NvFlexExt.h</a> +</li> +<li>NvFlexExtMapTriangleData() +: <a class="el" href="_nv_flex_ext_8h.html#a1646bf409084777cd0ff5d4fcccf07de">NvFlexExt.h</a> +</li> +<li>NvFlexExtMovingFrameApply() +: <a class="el" href="_nv_flex_ext_8h.html#a4ffe9bcd59a6cfc8900ac136f5123304">NvFlexExt.h</a> +</li> +<li>NvFlexExtMovingFrameInit() +: <a class="el" href="_nv_flex_ext_8h.html#a6a20d814e3b083b069daa0f20a3e756e">NvFlexExt.h</a> +</li> +<li>NvFlexExtMovingFrameUpdate() +: <a class="el" href="_nv_flex_ext_8h.html#a780022c1b8425074ce08328e8e8c35cc">NvFlexExt.h</a> +</li> +<li>NvFlexExtNotifyAssetChanged() +: <a class="el" href="_nv_flex_ext_8h.html#ad9343d07f49098ee205a1ed48dc9db34">NvFlexExt.h</a> +</li> +<li>NvFlexExtPullFromDevice() +: <a class="el" href="_nv_flex_ext_8h.html#a89ea7bbd26bec46f1b82d84257de1f58">NvFlexExt.h</a> +</li> +<li>NvFlexExtPushToDevice() +: <a class="el" href="_nv_flex_ext_8h.html#a425f4e472bb83797498c904ab228209c">NvFlexExt.h</a> +</li> +<li>NvFlexExtSetForceFields() +: <a class="el" href="_nv_flex_ext_8h.html#aa36d43b9e53b9b66d43c2bc5eb5abf98">NvFlexExt.h</a> +</li> +<li>NvFlexExtTearClothMesh() +: <a class="el" href="_nv_flex_ext_8h.html#a5efc0113d5432eb959437e6e3a98cc5f">NvFlexExt.h</a> +</li> +<li>NvFlexExtTickContainer() +: <a class="el" href="_nv_flex_ext_8h.html#ab4caadf5a6b19674849bfce91d986e7b">NvFlexExt.h</a> +</li> +<li>NvFlexExtUnmapParticleData() +: <a class="el" href="_nv_flex_ext_8h.html#af0cd639c21be28640fe5e1dd94931d59">NvFlexExt.h</a> +</li> +<li>NvFlexExtUnmapShapeData() +: <a class="el" href="_nv_flex_ext_8h.html#ab51f04114586b5bf0f6fc5816fda9c69">NvFlexExt.h</a> +</li> +<li>NvFlexExtUnmapTriangleData() +: <a class="el" href="_nv_flex_ext_8h.html#a89e582ae93e0256b06f22d9abf361783">NvFlexExt.h</a> +</li> +<li>NvFlexExtUpdateInstances() +: <a class="el" href="_nv_flex_ext_8h.html#a4695d37db8b61495f200bfd88a2be628">NvFlexExt.h</a> +</li> +<li>NvFlexFlush() +: <a class="el" href="_nv_flex_8h.html#a898eb8e66a456dd2266c694f29cab600">NvFlex.h</a> +</li> +<li>NvFlexFreeBuffer() +: <a class="el" href="_nv_flex_8h.html#ab559759820a4322aff061745ef26c867">NvFlex.h</a> +</li> +<li>NvFlexGetActive() +: <a class="el" href="_nv_flex_8h.html#aeed8fe87fa073067af1a45560cc54a79">NvFlex.h</a> +</li> +<li>NvFlexGetActiveCount() +: <a class="el" href="_nv_flex_8h.html#a2345372dea2ad4f043153a84e7a2c407">NvFlex.h</a> +</li> +<li>NvFlexGetAnisotropy() +: <a class="el" href="_nv_flex_8h.html#ae28167c680ad56dcff600ce0a223cec5">NvFlex.h</a> +</li> +<li>NvFlexGetBounds() +: <a class="el" href="_nv_flex_8h.html#ab1eec84a21b1872fba11c9b4cc1d1629">NvFlex.h</a> +</li> +<li>NvFlexGetContacts() +: <a class="el" href="_nv_flex_8h.html#a7edac9cf450917147b83e98f5cb09f5d">NvFlex.h</a> +</li> +<li>NvFlexGetConvexMeshBounds() +: <a class="el" href="_nv_flex_8h.html#ad56e661161763579afb375b3841eb5ff">NvFlex.h</a> +</li> +<li>NvFlexGetDensities() +: <a class="el" href="_nv_flex_8h.html#a6f6f14e625dc744a127be81e6dc4cb74">NvFlex.h</a> +</li> +<li>NvFlexGetDetailTimers() +: <a class="el" href="_nv_flex_8h.html#ab1efb6764f65900cb09f0188ad6da08a">NvFlex.h</a> +</li> +<li>NvFlexGetDeviceAndContext() +: <a class="el" href="_nv_flex_8h.html#a2ac0a898a565a2cdf13b80acd4a3555c">NvFlex.h</a> +</li> +<li>NvFlexGetDeviceLatency() +: <a class="el" href="_nv_flex_8h.html#a221a4621ab98eca6ecd3368d288154a4">NvFlex.h</a> +</li> +<li>NvFlexGetDeviceName() +: <a class="el" href="_nv_flex_8h.html#a4c451971259524c6878b6b1ed4023ada">NvFlex.h</a> +</li> +<li>NvFlexGetDiffuseParticles() +: <a class="el" href="_nv_flex_8h.html#a37ada4b95999cc253dfb049b99030d50">NvFlex.h</a> +</li> +<li>NvFlexGetDynamicTriangles() +: <a class="el" href="_nv_flex_8h.html#abdfd0834422dd99154a27962614525e5">NvFlex.h</a> +</li> +<li>NvFlexGetNormals() +: <a class="el" href="_nv_flex_8h.html#aadb2a0cf125e4a6b2f3443ab7dcbd3d4">NvFlex.h</a> +</li> +<li>NvFlexGetParams() +: <a class="el" href="_nv_flex_8h.html#a581b458848039220203547af53de128f">NvFlex.h</a> +</li> +<li>NvFlexGetParticles() +: <a class="el" href="_nv_flex_8h.html#a84f06fff995d8eb034cff81c811fa312">NvFlex.h</a> +</li> +<li>NvFlexGetPhases() +: <a class="el" href="_nv_flex_8h.html#a15b7a5449bee38bbe5dcaf23690f09f5">NvFlex.h</a> +</li> +<li>NvFlexGetRestParticles() +: <a class="el" href="_nv_flex_8h.html#affb884bcf3e7e389812d0b52b0fc0490">NvFlex.h</a> +</li> +<li>NvFlexGetRigidTransforms() +: <a class="el" href="_nv_flex_8h.html#a3eafe7fe6b200c757c7402eca7d13f6d">NvFlex.h</a> +</li> +<li>NvFlexGetSmoothParticles() +: <a class="el" href="_nv_flex_8h.html#abfa62e01c4f4511d3f6a00ab6a0f257a">NvFlex.h</a> +</li> +<li>NvFlexGetSolverLibrary() +: <a class="el" href="_nv_flex_8h.html#ae0d57e4fc2b3b51ec08f7da0a28ff343">NvFlex.h</a> +</li> +<li>NvFlexGetSprings() +: <a class="el" href="_nv_flex_8h.html#aab5f90f4024d71d08c3f9327c6d8c184">NvFlex.h</a> +</li> +<li>NvFlexGetTimers() +: <a class="el" href="_nv_flex_8h.html#ab16b6d2e11e0ab417ee6c4cf16f0a27d">NvFlex.h</a> +</li> +<li>NvFlexGetTriangleMeshBounds() +: <a class="el" href="_nv_flex_8h.html#a60794d849b4184335e2a0ddec0a9e6a2">NvFlex.h</a> +</li> +<li>NvFlexGetVelocities() +: <a class="el" href="_nv_flex_8h.html#a67bd9669086e823ebe33d08d14f5b2b9">NvFlex.h</a> +</li> +<li>NvFlexGetVersion() +: <a class="el" href="_nv_flex_8h.html#ac25ec5de38c177db51198bb620644d36">NvFlex.h</a> +</li> +<li>NvFlexInit() +: <a class="el" href="_nv_flex_8h.html#a687e5ec141948f779faa9183b68cb743">NvFlex.h</a> +</li> +<li>NvFlexLibrary +: <a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlex.h</a> +</li> +<li>NvFlexMakePhase() +: <a class="el" href="_nv_flex_8h.html#af53fa9d7caef50db346475065504848d">NvFlex.h</a> +</li> +<li>NvFlexMakeShapeFlags() +: <a class="el" href="_nv_flex_8h.html#ad6ee1e23e0c49aad63df8f605182de3a">NvFlex.h</a> +</li> +<li>NvFlexMap() +: <a class="el" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlex.h</a> +</li> +<li>NvFlexMapFlags +: <a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16c">NvFlex.h</a> +</li> +<li>NvFlexPhase +: <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644">NvFlex.h</a> +</li> +<li>NvFlexRegisterD3DBuffer() +: <a class="el" href="_nv_flex_8h.html#ab487e68ce1c84ce1eec0c85b7daf5aa0">NvFlex.h</a> +</li> +<li>NvFlexRegisterOGLBuffer() +: <a class="el" href="_nv_flex_8h.html#aab83daf46e5a9428a0ad76fb75e8ec7e">NvFlex.h</a> +</li> +<li>NvFlexRegisterSolverCallback() +: <a class="el" href="_nv_flex_8h.html#ac5427457488ab3f2de91cf65335dda08">NvFlex.h</a> +</li> +<li>NvFlexRelaxationMode +: <a class="el" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3b">NvFlex.h</a> +</li> +<li>NvFlexRestoreContext() +: <a class="el" href="_nv_flex_8h.html#ae6671f352bd77e296609d0bc2a57fd11">NvFlex.h</a> +</li> +<li>NvFlexSetActive() +: <a class="el" href="_nv_flex_8h.html#aea2af336bdd96d7168c3acdce6d1875d">NvFlex.h</a> +</li> +<li>NvFlexSetDiffuseParticles() +: <a class="el" href="_nv_flex_8h.html#a5a7213593dd9a23d9d67f8517d1da9de">NvFlex.h</a> +</li> +<li>NvFlexSetDynamicTriangles() +: <a class="el" href="_nv_flex_8h.html#aa03d94be697cdc3aaa56e469d87255a4">NvFlex.h</a> +</li> +<li>NvFlexSetInflatables() +: <a class="el" href="_nv_flex_8h.html#a7f2b59fba77c60ce116e1eac57d63e50">NvFlex.h</a> +</li> +<li>NvFlexSetNormals() +: <a class="el" href="_nv_flex_8h.html#add03fd357383845f07e0596290faf316">NvFlex.h</a> +</li> +<li>NvFlexSetParams() +: <a class="el" href="_nv_flex_8h.html#ae2db6ad8006027c1acf2315a0d15fe71">NvFlex.h</a> +</li> +<li>NvFlexSetParticles() +: <a class="el" href="_nv_flex_8h.html#abef057ac89ba5cf1cd71f0084f9313de">NvFlex.h</a> +</li> +<li>NvFlexSetPhases() +: <a class="el" href="_nv_flex_8h.html#a3117f92571613709936291c48414e521">NvFlex.h</a> +</li> +<li>NvFlexSetRestParticles() +: <a class="el" href="_nv_flex_8h.html#aa457096286567a37d4f1d5f4857d9296">NvFlex.h</a> +</li> +<li>NvFlexSetRigids() +: <a class="el" href="_nv_flex_8h.html#a89c872e761a53c87375f536a0ef597d8">NvFlex.h</a> +</li> +<li>NvFlexSetShapes() +: <a class="el" href="_nv_flex_8h.html#aea4e7117722df53dfe44c676496117fa">NvFlex.h</a> +</li> +<li>NvFlexSetSprings() +: <a class="el" href="_nv_flex_8h.html#ae67c0cab2ecee8eb9485a26ef0fad6a9">NvFlex.h</a> +</li> +<li>NvFlexSetVelocities() +: <a class="el" href="_nv_flex_8h.html#afe09e63d22c5156fe24cd2d2bc069c04">NvFlex.h</a> +</li> +<li>NvFlexShutdown() +: <a class="el" href="_nv_flex_8h.html#aaf59e45ada57c7f958a8030099cbe211">NvFlex.h</a> +</li> +<li>NvFlexSolver +: <a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlex.h</a> +</li> +<li>NvFlexSolverCallbackStage +: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9">NvFlex.h</a> +</li> +<li>NvFlexTriangleMeshId +: <a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlex.h</a> +</li> +<li>NvFlexUnmap() +: <a class="el" href="_nv_flex_8h.html#a054cb27646a389ea257d1bbde46a6e97">NvFlex.h</a> +</li> +<li>NvFlexUnregisterD3DBuffer() +: <a class="el" href="_nv_flex_8h.html#ad607e7916e5d76b384a61f1c1f94ab32">NvFlex.h</a> +</li> +<li>NvFlexUnregisterOGLBuffer() +: <a class="el" href="_nv_flex_8h.html#a78045a8d4e856372df108dc616a94cd8">NvFlex.h</a> +</li> +<li>NvFlexUpdateConvexMesh() +: <a class="el" href="_nv_flex_8h.html#a69289002a6f8ecd697118f0ec6572f5d">NvFlex.h</a> +</li> +<li>NvFlexUpdateDistanceField() +: <a class="el" href="_nv_flex_8h.html#a584ffb275b9986fd5444ed1a7ea247d9">NvFlex.h</a> +</li> +<li>NvFlexUpdateSolver() +: <a class="el" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlex.h</a> +</li> +<li>NvFlexUpdateTriangleMesh() +: <a class="el" href="_nv_flex_8h.html#a4958c555f0ed65dee54c37af32529356">NvFlex.h</a> +</li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Wed Feb 22 2017 12:18:22 for FLEX by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.9.1 +</small></address> +</body> +</html> diff --git a/doc/_static/api/globals_enum.html b/doc/_static/api/globals_enum.html new file mode 100644 index 0000000..c693fe9 --- /dev/null +++ b/doc/_static/api/globals_enum.html @@ -0,0 +1,74 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.9.1"/> +<title>FLEX: Globals</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +<link href="flex.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">FLEX +  <span id="projectnumber">1.1.0</span> + </div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.9.1 --> +</div><!-- top --> +<div class="contents"> + <ul> +<li>NvFlexBufferType +: <a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3">NvFlex.h</a> +</li> +<li>NvFlexCollisionShapeFlags +: <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304c">NvFlex.h</a> +</li> +<li>NvFlexCollisionShapeType +: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26ba">NvFlex.h</a> +</li> +<li>NvFlexComputeType +: <a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252">NvFlex.h</a> +</li> +<li>NvFlexErrorSeverity +: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfca">NvFlex.h</a> +</li> +<li>NvFlexExtForceMode +: <a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68e">NvFlexExt.h</a> +</li> +<li>NvFlexMapFlags +: <a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16c">NvFlex.h</a> +</li> +<li>NvFlexPhase +: <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644">NvFlex.h</a> +</li> +<li>NvFlexRelaxationMode +: <a class="el" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3b">NvFlex.h</a> +</li> +<li>NvFlexSolverCallbackStage +: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9">NvFlex.h</a> +</li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Wed Feb 22 2017 12:18:22 for FLEX by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.9.1 +</small></address> +</body> +</html> diff --git a/doc/_static/api/globals_eval.html b/doc/_static/api/globals_eval.html new file mode 100644 index 0000000..465a0cb --- /dev/null +++ b/doc/_static/api/globals_eval.html @@ -0,0 +1,160 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.9.1"/> +<title>FLEX: Globals</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +<link href="flex.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">FLEX +  <span id="projectnumber">1.1.0</span> + </div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.9.1 --> +</div><!-- top --> +<div class="contents"> +  + +<h3><a class="anchor" id="index_e"></a>- e -</h3><ul> +<li>eNvFlexBufferDevice +: <a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3a103255fa795b55a7f430a41493002576">NvFlex.h</a> +</li> +<li>eNvFlexBufferHost +: <a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8">NvFlex.h</a> +</li> +<li>eNvFlexCUDA +: <a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252ad0c27f7aafdc4fe569722025c8eb2178">NvFlex.h</a> +</li> +<li>eNvFlexD3D11 +: <a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a297a93979a88fda6e6b551dcab5fb3df">NvFlex.h</a> +</li> +<li>eNvFlexD3D12 +: <a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a15e78a7baf13cc7fd73f255ac84f0943">NvFlex.h</a> +</li> +<li>eNvFlexExtModeForce +: <a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea9d4e8413b628837f9d1982897fd1f4a2">NvFlexExt.h</a> +</li> +<li>eNvFlexExtModeImpulse +: <a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea92265f22fc2a724baf640fdace8f8ea0">NvFlexExt.h</a> +</li> +<li>eNvFlexExtModeVelocityChange +: <a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea6a2e4817b1e86764147c81e8d5e5070c">NvFlexExt.h</a> +</li> +<li>eNvFlexLogAll +: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8feff72c0b0391e8adf3ddb6c39ef10e">NvFlex.h</a> +</li> +<li>eNvFlexLogDebug +: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa77b51759e33d60b2caf327bb4835351e">NvFlex.h</a> +</li> +<li>eNvFlexLogError +: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8aed6496f033604148138299fa075edd">NvFlex.h</a> +</li> +<li>eNvFlexLogInfo +: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa03d239332ae87f46270855dd06b6e58f">NvFlex.h</a> +</li> +<li>eNvFlexLogWarning +: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa5538835c4767004ba5fd443ada08ea61">NvFlex.h</a> +</li> +<li>eNvFlexMapDiscard +: <a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16caa01c2dce3aa1e0d9d151060e1786c706">NvFlex.h</a> +</li> +<li>eNvFlexMapDoNotWait +: <a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca1bd450ab65ccc06288fae95e23d5e6f1">NvFlex.h</a> +</li> +<li>eNvFlexMapWait +: <a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">NvFlex.h</a> +</li> +<li>eNvFlexPhaseFluid +: <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a1728772beb1746ace4c549b2ed8f1d74">NvFlex.h</a> +</li> +<li>eNvFlexPhaseGroupMask +: <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644ad108f6ebf28346813cfd3602d984bb32">NvFlex.h</a> +</li> +<li>eNvFlexPhaseSelfCollide +: <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a453a23cc8e9d2e6097b5be187f3c6977">NvFlex.h</a> +</li> +<li>eNvFlexPhaseSelfCollideFilter +: <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a76a62d3a5df428f18e01f8b37573a7b1">NvFlex.h</a> +</li> +<li>eNvFlexRelaxationGlobal +: <a class="el" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba33711a4b466d606d68dee43918f819db">NvFlex.h</a> +</li> +<li>eNvFlexRelaxationLocal +: <a class="el" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba858afe9529e908c2bc8ce92da8943b7c">NvFlex.h</a> +</li> +<li>eNvFlexShapeBox +: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baab17c8dd4f9500016b77a9b49de3c48e7">NvFlex.h</a> +</li> +<li>eNvFlexShapeCapsule +: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1724c140b583fbf2c11c14a24dd3764a">NvFlex.h</a> +</li> +<li>eNvFlexShapeConvexMesh +: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baaed52f0e803c6745ffc1a5f018a8756ce">NvFlex.h</a> +</li> +<li>eNvFlexShapeFlagDynamic +: <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cadc6740cf6d829fba159d92e43ffb5992">NvFlex.h</a> +</li> +<li>eNvFlexShapeFlagReserved +: <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304caa1c1225f6b8b2906c83748cfc46b81d9">NvFlex.h</a> +</li> +<li>eNvFlexShapeFlagTrigger +: <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304ca409215fa9b917f2d0830a66bd11b3ff8">NvFlex.h</a> +</li> +<li>eNvFlexShapeFlagTypeMask +: <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cae8a10737948abf6973f0f1d66bae7ef8">NvFlex.h</a> +</li> +<li>eNvFlexShapeSDF +: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1fd78f8694b954f8d12fe7d911f17180">NvFlex.h</a> +</li> +<li>eNvFlexShapeSphere +: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baae22144512ae098865c6725af16a68ad3">NvFlex.h</a> +</li> +<li>eNvFlexShapeTriangleMesh +: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa315488da382a5e9794c83358385f7ae1">NvFlex.h</a> +</li> +<li>eNvFlexStageCount +: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a1f2e7acff9b3b74922f90240d29fd1b3">NvFlex.h</a> +</li> +<li>eNvFlexStageIterationEnd +: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9ab75a912c3990b0fbd6b06a6741a20e69">NvFlex.h</a> +</li> +<li>eNvFlexStageIterationStart +: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a9f3914fdb03915a14ebe55a2c730e7ff">NvFlex.h</a> +</li> +<li>eNvFlexStageSubstepBegin +: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a79ce9005dbc92198a1f180c6afde6a44">NvFlex.h</a> +</li> +<li>eNvFlexStageSubstepEnd +: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a6f13e2ebdbf21f8c8ebcfe1ac9160586">NvFlex.h</a> +</li> +<li>eNvFlexStageUpdateEnd +: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a260340ba9071892bd8795c3b29289806">NvFlex.h</a> +</li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Wed Feb 22 2017 12:18:22 for FLEX by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.9.1 +</small></address> +</body> +</html> diff --git a/doc/_static/api/globals_func.html b/doc/_static/api/globals_func.html new file mode 100644 index 0000000..2766e2e --- /dev/null +++ b/doc/_static/api/globals_func.html @@ -0,0 +1,355 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.9.1"/> +<title>FLEX: Globals</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +<link href="flex.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">FLEX +  <span id="projectnumber">1.1.0</span> + </div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.9.1 --> +</div><!-- top --> +<div class="contents"> +  + +<h3><a class="anchor" id="index_n"></a>- n -</h3><ul> +<li>NvFlexAcquireContext() +: <a class="el" href="_nv_flex_8h.html#a42ec7b30c79d4733e6a756b5d9b15ee6">NvFlex.h</a> +</li> +<li>NvFlexAllocBuffer() +: <a class="el" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlex.h</a> +</li> +<li>NvFlexCreateConvexMesh() +: <a class="el" href="_nv_flex_8h.html#afbaafe2b1006352002b03aabaca531cc">NvFlex.h</a> +</li> +<li>NvFlexCreateDistanceField() +: <a class="el" href="_nv_flex_8h.html#a5c28caf6d5d513c5adacd4fbc782f308">NvFlex.h</a> +</li> +<li>NvFlexCreateSolver() +: <a class="el" href="_nv_flex_8h.html#af7f91fa47c779fcd8bee60061de6d31c">NvFlex.h</a> +</li> +<li>NvFlexCreateTriangleMesh() +: <a class="el" href="_nv_flex_8h.html#afdda5a5210938a1e8a7c3a8218ad468e">NvFlex.h</a> +</li> +<li>NvFlexDestroyConvexMesh() +: <a class="el" href="_nv_flex_8h.html#ac85b6372e5c7bfc508ecb7b8c59c72a0">NvFlex.h</a> +</li> +<li>NvFlexDestroyDistanceField() +: <a class="el" href="_nv_flex_8h.html#ab11bdd7f778d17af16cefea33265cb65">NvFlex.h</a> +</li> +<li>NvFlexDestroySolver() +: <a class="el" href="_nv_flex_8h.html#a1d755d7b090f7ed5c4c50d2d3fef1558">NvFlex.h</a> +</li> +<li>NvFlexDestroyTriangleMesh() +: <a class="el" href="_nv_flex_8h.html#a4cb4462803ebff105d151fd45b4efad6">NvFlex.h</a> +</li> +<li>NvFlexDeviceCreateCudaContext() +: <a class="el" href="_nv_flex_device_8h.html#a922c489035a9bdb84bee1cd0ef73558d">NvFlexDevice.h</a> +</li> +<li>NvFlexDeviceDestroyCudaContext() +: <a class="el" href="_nv_flex_device_8h.html#a97f4f513f226d573410478fa6d79f05a">NvFlexDevice.h</a> +</li> +<li>NvFlexDeviceGetSuggestedOrdinal() +: <a class="el" href="_nv_flex_device_8h.html#a914a7e6338379d00397bd3e7e07c0280">NvFlexDevice.h</a> +</li> +<li>NvFlexExtAllocParticles() +: <a class="el" href="_nv_flex_ext_8h.html#a7c036ccca83df3659529858068e0593d">NvFlexExt.h</a> +</li> +<li>NvFlexExtCreateClothFromMesh() +: <a class="el" href="_nv_flex_ext_8h.html#a8bef033b2a8567dfcc954e22534147ee">NvFlexExt.h</a> +</li> +<li>NvFlexExtCreateContainer() +: <a class="el" href="_nv_flex_ext_8h.html#a49906c9e3466d40383cddf627fe26658">NvFlexExt.h</a> +</li> +<li>NvFlexExtCreateForceFieldCallback() +: <a class="el" href="_nv_flex_ext_8h.html#ac1ed9ff49120d0691352399c8173bdcf">NvFlexExt.h</a> +</li> +<li>NvFlexExtCreateInstance() +: <a class="el" href="_nv_flex_ext_8h.html#a3bf10e2c9370602142b7be01e920f973">NvFlexExt.h</a> +</li> +<li>NvFlexExtCreateRigidFromMesh() +: <a class="el" href="_nv_flex_ext_8h.html#ad0a9c7e2f907e46b60f6bacf402987ce">NvFlexExt.h</a> +</li> +<li>NvFlexExtCreateSoftFromMesh() +: <a class="el" href="_nv_flex_ext_8h.html#a9f2c0daf521df4920e44cca1cb30b42c">NvFlexExt.h</a> +</li> +<li>NvFlexExtCreateSoftMeshSkinning() +: <a class="el" href="_nv_flex_ext_8h.html#a6e3f12e9e92abb31b115cf31b33e34bb">NvFlexExt.h</a> +</li> +<li>NvFlexExtCreateTearingClothFromMesh() +: <a class="el" href="_nv_flex_ext_8h.html#addad82b3598059ffde7b3b5babe17bd4">NvFlexExt.h</a> +</li> +<li>NvFlexExtCreateWeldedMeshIndices() +: <a class="el" href="_nv_flex_ext_8h.html#a82a15dfd40b338a07cf4517f55f16720">NvFlexExt.h</a> +</li> +<li>NvFlexExtDestroyAsset() +: <a class="el" href="_nv_flex_ext_8h.html#a36c33fafe13c5fd5773bf9a2af2dd745">NvFlexExt.h</a> +</li> +<li>NvFlexExtDestroyContainer() +: <a class="el" href="_nv_flex_ext_8h.html#a2509137d9fb8ab6818f35ab7761da7a5">NvFlexExt.h</a> +</li> +<li>NvFlexExtDestroyForceFieldCallback() +: <a class="el" href="_nv_flex_ext_8h.html#ad08da77f432ca56bc59647bf73da86cb">NvFlexExt.h</a> +</li> +<li>NvFlexExtDestroyInstance() +: <a class="el" href="_nv_flex_ext_8h.html#a2b5634f64bd0d8d86f894885a1c16a33">NvFlexExt.h</a> +</li> +<li>NvFlexExtDestroyTearingCloth() +: <a class="el" href="_nv_flex_ext_8h.html#a88054283907d3386f1a30cdc4475acb0">NvFlexExt.h</a> +</li> +<li>NvFlexExtFreeParticles() +: <a class="el" href="_nv_flex_ext_8h.html#ab0a259d159116b7fba9b229784b02c70">NvFlexExt.h</a> +</li> +<li>NvFlexExtGetActiveList() +: <a class="el" href="_nv_flex_ext_8h.html#a7fc268a27306f6fc68dd1c106cfa62db">NvFlexExt.h</a> +</li> +<li>NvFlexExtMapParticleData() +: <a class="el" href="_nv_flex_ext_8h.html#a3fa8bd4b7d4096602e611faf0bb62dfb">NvFlexExt.h</a> +</li> +<li>NvFlexExtMapShapeData() +: <a class="el" href="_nv_flex_ext_8h.html#a90f2d3ba5be20e70e7efead911ee7acc">NvFlexExt.h</a> +</li> +<li>NvFlexExtMapTriangleData() +: <a class="el" href="_nv_flex_ext_8h.html#a1646bf409084777cd0ff5d4fcccf07de">NvFlexExt.h</a> +</li> +<li>NvFlexExtMovingFrameApply() +: <a class="el" href="_nv_flex_ext_8h.html#a4ffe9bcd59a6cfc8900ac136f5123304">NvFlexExt.h</a> +</li> +<li>NvFlexExtMovingFrameInit() +: <a class="el" href="_nv_flex_ext_8h.html#a6a20d814e3b083b069daa0f20a3e756e">NvFlexExt.h</a> +</li> +<li>NvFlexExtMovingFrameUpdate() +: <a class="el" href="_nv_flex_ext_8h.html#a780022c1b8425074ce08328e8e8c35cc">NvFlexExt.h</a> +</li> +<li>NvFlexExtNotifyAssetChanged() +: <a class="el" href="_nv_flex_ext_8h.html#ad9343d07f49098ee205a1ed48dc9db34">NvFlexExt.h</a> +</li> +<li>NvFlexExtPullFromDevice() +: <a class="el" href="_nv_flex_ext_8h.html#a89ea7bbd26bec46f1b82d84257de1f58">NvFlexExt.h</a> +</li> +<li>NvFlexExtPushToDevice() +: <a class="el" href="_nv_flex_ext_8h.html#a425f4e472bb83797498c904ab228209c">NvFlexExt.h</a> +</li> +<li>NvFlexExtSetForceFields() +: <a class="el" href="_nv_flex_ext_8h.html#aa36d43b9e53b9b66d43c2bc5eb5abf98">NvFlexExt.h</a> +</li> +<li>NvFlexExtTearClothMesh() +: <a class="el" href="_nv_flex_ext_8h.html#a5efc0113d5432eb959437e6e3a98cc5f">NvFlexExt.h</a> +</li> +<li>NvFlexExtTickContainer() +: <a class="el" href="_nv_flex_ext_8h.html#ab4caadf5a6b19674849bfce91d986e7b">NvFlexExt.h</a> +</li> +<li>NvFlexExtUnmapParticleData() +: <a class="el" href="_nv_flex_ext_8h.html#af0cd639c21be28640fe5e1dd94931d59">NvFlexExt.h</a> +</li> +<li>NvFlexExtUnmapShapeData() +: <a class="el" href="_nv_flex_ext_8h.html#ab51f04114586b5bf0f6fc5816fda9c69">NvFlexExt.h</a> +</li> +<li>NvFlexExtUnmapTriangleData() +: <a class="el" href="_nv_flex_ext_8h.html#a89e582ae93e0256b06f22d9abf361783">NvFlexExt.h</a> +</li> +<li>NvFlexExtUpdateInstances() +: <a class="el" href="_nv_flex_ext_8h.html#a4695d37db8b61495f200bfd88a2be628">NvFlexExt.h</a> +</li> +<li>NvFlexFlush() +: <a class="el" href="_nv_flex_8h.html#a898eb8e66a456dd2266c694f29cab600">NvFlex.h</a> +</li> +<li>NvFlexFreeBuffer() +: <a class="el" href="_nv_flex_8h.html#ab559759820a4322aff061745ef26c867">NvFlex.h</a> +</li> +<li>NvFlexGetActive() +: <a class="el" href="_nv_flex_8h.html#aeed8fe87fa073067af1a45560cc54a79">NvFlex.h</a> +</li> +<li>NvFlexGetActiveCount() +: <a class="el" href="_nv_flex_8h.html#a2345372dea2ad4f043153a84e7a2c407">NvFlex.h</a> +</li> +<li>NvFlexGetAnisotropy() +: <a class="el" href="_nv_flex_8h.html#ae28167c680ad56dcff600ce0a223cec5">NvFlex.h</a> +</li> +<li>NvFlexGetBounds() +: <a class="el" href="_nv_flex_8h.html#ab1eec84a21b1872fba11c9b4cc1d1629">NvFlex.h</a> +</li> +<li>NvFlexGetContacts() +: <a class="el" href="_nv_flex_8h.html#a7edac9cf450917147b83e98f5cb09f5d">NvFlex.h</a> +</li> +<li>NvFlexGetConvexMeshBounds() +: <a class="el" href="_nv_flex_8h.html#ad56e661161763579afb375b3841eb5ff">NvFlex.h</a> +</li> +<li>NvFlexGetDensities() +: <a class="el" href="_nv_flex_8h.html#a6f6f14e625dc744a127be81e6dc4cb74">NvFlex.h</a> +</li> +<li>NvFlexGetDetailTimers() +: <a class="el" href="_nv_flex_8h.html#ab1efb6764f65900cb09f0188ad6da08a">NvFlex.h</a> +</li> +<li>NvFlexGetDeviceAndContext() +: <a class="el" href="_nv_flex_8h.html#a2ac0a898a565a2cdf13b80acd4a3555c">NvFlex.h</a> +</li> +<li>NvFlexGetDeviceLatency() +: <a class="el" href="_nv_flex_8h.html#a221a4621ab98eca6ecd3368d288154a4">NvFlex.h</a> +</li> +<li>NvFlexGetDeviceName() +: <a class="el" href="_nv_flex_8h.html#a4c451971259524c6878b6b1ed4023ada">NvFlex.h</a> +</li> +<li>NvFlexGetDiffuseParticles() +: <a class="el" href="_nv_flex_8h.html#a37ada4b95999cc253dfb049b99030d50">NvFlex.h</a> +</li> +<li>NvFlexGetDynamicTriangles() +: <a class="el" href="_nv_flex_8h.html#abdfd0834422dd99154a27962614525e5">NvFlex.h</a> +</li> +<li>NvFlexGetNormals() +: <a class="el" href="_nv_flex_8h.html#aadb2a0cf125e4a6b2f3443ab7dcbd3d4">NvFlex.h</a> +</li> +<li>NvFlexGetParams() +: <a class="el" href="_nv_flex_8h.html#a581b458848039220203547af53de128f">NvFlex.h</a> +</li> +<li>NvFlexGetParticles() +: <a class="el" href="_nv_flex_8h.html#a84f06fff995d8eb034cff81c811fa312">NvFlex.h</a> +</li> +<li>NvFlexGetPhases() +: <a class="el" href="_nv_flex_8h.html#a15b7a5449bee38bbe5dcaf23690f09f5">NvFlex.h</a> +</li> +<li>NvFlexGetRestParticles() +: <a class="el" href="_nv_flex_8h.html#affb884bcf3e7e389812d0b52b0fc0490">NvFlex.h</a> +</li> +<li>NvFlexGetRigidTransforms() +: <a class="el" href="_nv_flex_8h.html#a3eafe7fe6b200c757c7402eca7d13f6d">NvFlex.h</a> +</li> +<li>NvFlexGetSmoothParticles() +: <a class="el" href="_nv_flex_8h.html#abfa62e01c4f4511d3f6a00ab6a0f257a">NvFlex.h</a> +</li> +<li>NvFlexGetSolverLibrary() +: <a class="el" href="_nv_flex_8h.html#ae0d57e4fc2b3b51ec08f7da0a28ff343">NvFlex.h</a> +</li> +<li>NvFlexGetSprings() +: <a class="el" href="_nv_flex_8h.html#aab5f90f4024d71d08c3f9327c6d8c184">NvFlex.h</a> +</li> +<li>NvFlexGetTimers() +: <a class="el" href="_nv_flex_8h.html#ab16b6d2e11e0ab417ee6c4cf16f0a27d">NvFlex.h</a> +</li> +<li>NvFlexGetTriangleMeshBounds() +: <a class="el" href="_nv_flex_8h.html#a60794d849b4184335e2a0ddec0a9e6a2">NvFlex.h</a> +</li> +<li>NvFlexGetVelocities() +: <a class="el" href="_nv_flex_8h.html#a67bd9669086e823ebe33d08d14f5b2b9">NvFlex.h</a> +</li> +<li>NvFlexGetVersion() +: <a class="el" href="_nv_flex_8h.html#ac25ec5de38c177db51198bb620644d36">NvFlex.h</a> +</li> +<li>NvFlexInit() +: <a class="el" href="_nv_flex_8h.html#a687e5ec141948f779faa9183b68cb743">NvFlex.h</a> +</li> +<li>NvFlexMakePhase() +: <a class="el" href="_nv_flex_8h.html#af53fa9d7caef50db346475065504848d">NvFlex.h</a> +</li> +<li>NvFlexMakeShapeFlags() +: <a class="el" href="_nv_flex_8h.html#ad6ee1e23e0c49aad63df8f605182de3a">NvFlex.h</a> +</li> +<li>NvFlexMap() +: <a class="el" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlex.h</a> +</li> +<li>NvFlexRegisterD3DBuffer() +: <a class="el" href="_nv_flex_8h.html#ab487e68ce1c84ce1eec0c85b7daf5aa0">NvFlex.h</a> +</li> +<li>NvFlexRegisterOGLBuffer() +: <a class="el" href="_nv_flex_8h.html#aab83daf46e5a9428a0ad76fb75e8ec7e">NvFlex.h</a> +</li> +<li>NvFlexRegisterSolverCallback() +: <a class="el" href="_nv_flex_8h.html#ac5427457488ab3f2de91cf65335dda08">NvFlex.h</a> +</li> +<li>NvFlexRestoreContext() +: <a class="el" href="_nv_flex_8h.html#ae6671f352bd77e296609d0bc2a57fd11">NvFlex.h</a> +</li> +<li>NvFlexSetActive() +: <a class="el" href="_nv_flex_8h.html#aea2af336bdd96d7168c3acdce6d1875d">NvFlex.h</a> +</li> +<li>NvFlexSetDiffuseParticles() +: <a class="el" href="_nv_flex_8h.html#a5a7213593dd9a23d9d67f8517d1da9de">NvFlex.h</a> +</li> +<li>NvFlexSetDynamicTriangles() +: <a class="el" href="_nv_flex_8h.html#aa03d94be697cdc3aaa56e469d87255a4">NvFlex.h</a> +</li> +<li>NvFlexSetInflatables() +: <a class="el" href="_nv_flex_8h.html#a7f2b59fba77c60ce116e1eac57d63e50">NvFlex.h</a> +</li> +<li>NvFlexSetNormals() +: <a class="el" href="_nv_flex_8h.html#add03fd357383845f07e0596290faf316">NvFlex.h</a> +</li> +<li>NvFlexSetParams() +: <a class="el" href="_nv_flex_8h.html#ae2db6ad8006027c1acf2315a0d15fe71">NvFlex.h</a> +</li> +<li>NvFlexSetParticles() +: <a class="el" href="_nv_flex_8h.html#abef057ac89ba5cf1cd71f0084f9313de">NvFlex.h</a> +</li> +<li>NvFlexSetPhases() +: <a class="el" href="_nv_flex_8h.html#a3117f92571613709936291c48414e521">NvFlex.h</a> +</li> +<li>NvFlexSetRestParticles() +: <a class="el" href="_nv_flex_8h.html#aa457096286567a37d4f1d5f4857d9296">NvFlex.h</a> +</li> +<li>NvFlexSetRigids() +: <a class="el" href="_nv_flex_8h.html#a89c872e761a53c87375f536a0ef597d8">NvFlex.h</a> +</li> +<li>NvFlexSetShapes() +: <a class="el" href="_nv_flex_8h.html#aea4e7117722df53dfe44c676496117fa">NvFlex.h</a> +</li> +<li>NvFlexSetSprings() +: <a class="el" href="_nv_flex_8h.html#ae67c0cab2ecee8eb9485a26ef0fad6a9">NvFlex.h</a> +</li> +<li>NvFlexSetVelocities() +: <a class="el" href="_nv_flex_8h.html#afe09e63d22c5156fe24cd2d2bc069c04">NvFlex.h</a> +</li> +<li>NvFlexShutdown() +: <a class="el" href="_nv_flex_8h.html#aaf59e45ada57c7f958a8030099cbe211">NvFlex.h</a> +</li> +<li>NvFlexUnmap() +: <a class="el" href="_nv_flex_8h.html#a054cb27646a389ea257d1bbde46a6e97">NvFlex.h</a> +</li> +<li>NvFlexUnregisterD3DBuffer() +: <a class="el" href="_nv_flex_8h.html#ad607e7916e5d76b384a61f1c1f94ab32">NvFlex.h</a> +</li> +<li>NvFlexUnregisterOGLBuffer() +: <a class="el" href="_nv_flex_8h.html#a78045a8d4e856372df108dc616a94cd8">NvFlex.h</a> +</li> +<li>NvFlexUpdateConvexMesh() +: <a class="el" href="_nv_flex_8h.html#a69289002a6f8ecd697118f0ec6572f5d">NvFlex.h</a> +</li> +<li>NvFlexUpdateDistanceField() +: <a class="el" href="_nv_flex_8h.html#a584ffb275b9986fd5444ed1a7ea247d9">NvFlex.h</a> +</li> +<li>NvFlexUpdateSolver() +: <a class="el" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlex.h</a> +</li> +<li>NvFlexUpdateTriangleMesh() +: <a class="el" href="_nv_flex_8h.html#a4958c555f0ed65dee54c37af32529356">NvFlex.h</a> +</li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Wed Feb 22 2017 12:18:22 for FLEX by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.9.1 +</small></address> +</body> +</html> diff --git a/doc/_static/api/globals_type.html b/doc/_static/api/globals_type.html new file mode 100644 index 0000000..3ba1e90 --- /dev/null +++ b/doc/_static/api/globals_type.html @@ -0,0 +1,71 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.9.1"/> +<title>FLEX: Globals</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +<link href="flex.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">FLEX +  <span id="projectnumber">1.1.0</span> + </div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.9.1 --> +</div><!-- top --> +<div class="contents"> + <ul> +<li>NvFlexBuffer +: <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlex.h</a> +</li> +<li>NvFlexConvexMeshId +: <a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlex.h</a> +</li> +<li>NvFlexDistanceFieldId +: <a class="el" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlex.h</a> +</li> +<li>NvFlexErrorCallback +: <a class="el" href="_nv_flex_8h.html#abe6f00c9b94debbf7c181082a14076d5">NvFlex.h</a> +</li> +<li>NvFlexExtContainer +: <a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExt.h</a> +</li> +<li>NvFlexExtForceFieldCallback +: <a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExt.h</a> +</li> +<li>NvFlexLibrary +: <a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlex.h</a> +</li> +<li>NvFlexSolver +: <a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlex.h</a> +</li> +<li>NvFlexTriangleMeshId +: <a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlex.h</a> +</li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Wed Feb 22 2017 12:18:22 for FLEX by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.9.1 +</small></address> +</body> +</html> diff --git a/doc/_static/api/index.html b/doc/_static/api/index.html new file mode 100644 index 0000000..3130b0d --- /dev/null +++ b/doc/_static/api/index.html @@ -0,0 +1,51 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.9.1"/> +<title>FLEX: Main Page</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +<link href="flex.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">FLEX +  <span id="projectnumber">1.1.0</span> + </div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.9.1 --> +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">FLEX Documentation</div> </div> +</div><!--header--> +<div class="contents"> +<ul><li><a href="index.html"><span>User Guide</span></a> +</li><li><a href="files.html"><span>Files</span></a> +<ul><li><a href="files.html"><span>File List</span></a> +</li></ul> +</li></ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Wed Feb 22 2017 12:18:22 for FLEX by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.9.1 +</small></address> +</body> +</html> diff --git a/doc/_static/api/jquery.js b/doc/_static/api/jquery.js new file mode 100644 index 0000000..1f4d0b4 --- /dev/null +++ b/doc/_static/api/jquery.js @@ -0,0 +1,68 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b4<b3;b4++){if((b9=arguments[b4])!=null){for(b2 in b9){b0=b5[b2];b1=b9[b2];if(b5===b1){continue}if(b8&&b1&&(bF.isPlainObject(b1)||(b6=bF.isArray(b1)))){if(b6){b6=false;b7=b0&&bF.isArray(b0)?b0:[]}else{b7=b0&&bF.isPlainObject(b0)?b0:{}}b5[b2]=bF.extend(b8,b7,b1)}else{if(b1!==L){b5[b2]=b1}}}}}return b5};bF.extend({noConflict:function(b0){if(bb.$===bF){bb.$=bH}if(b0&&bb.jQuery===bF){bb.jQuery=bU}return bF},isReady:false,readyWait:1,holdReady:function(b0){if(b0){bF.readyWait++}else{bF.ready(true)}},ready:function(b0){if((b0===true&&!--bF.readyWait)||(b0!==true&&!bF.isReady)){if(!av.body){return setTimeout(bF.ready,1)}bF.isReady=true;if(b0!==true&&--bF.readyWait>0){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b4<b5;){if(b6.apply(b3[b4++],b2)===false){break}}}}else{if(b0){for(b1 in b3){if(b6.call(b3[b1],b1,b3[b1])===false){break}}}else{for(;b4<b5;){if(b6.call(b3[b4],b4,b3[b4++])===false){break}}}}return b3},trim:bO?function(b0){return b0==null?"":bO.call(b0)}:function(b0){return b0==null?"":b0.toString().replace(bI,"").replace(bE,"")},makeArray:function(b3,b1){var b0=b1||[];if(b3!=null){var b2=bF.type(b3);if(b3.length==null||b2==="string"||b2==="function"||b2==="regexp"||bF.isWindow(b3)){bz.call(b0,b3)}else{bF.merge(b0,b3)}}return b0},inArray:function(b2,b3,b1){var b0;if(b3){if(bv){return bv.call(b3,b2,b1)}b0=b3.length;b1=b1?b1<0?Math.max(0,b0+b1):b1:0;for(;b1<b0;b1++){if(b1 in b3&&b3[b1]===b2){return b1}}}return -1},merge:function(b4,b2){var b3=b4.length,b1=0;if(typeof b2.length==="number"){for(var b0=b2.length;b1<b0;b1++){b4[b3++]=b2[b1]}}else{while(b2[b1]!==L){b4[b3++]=b2[b1++]}}b4.length=b3;return b4},grep:function(b1,b6,b0){var b2=[],b5;b0=!!b0;for(var b3=0,b4=b1.length;b3<b4;b3++){b5=!!b6(b1[b3],b3);if(b0!==b5){b2.push(b1[b3])}}return b2},map:function(b0,b7,b8){var b5,b6,b4=[],b2=0,b1=b0.length,b3=b0 instanceof bF||b1!==L&&typeof b1==="number"&&((b1>0&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b2<b1;b2++){b5=b7(b0[b2],b2,b8);if(b5!=null){b4[b4.length]=b5}}}else{for(b6 in b0){b5=b7(b0[b6],b6,b8);if(b5!=null){b4[b4.length]=b5}}}return b4.concat.apply([],b4)},guid:1,proxy:function(b4,b3){if(typeof b3==="string"){var b2=b4[b3];b3=b4;b4=b2}if(!bF.isFunction(b4)){return L}var b0=bK.call(arguments,2),b1=function(){return b4.apply(b3,b0.concat(bK.call(arguments)))};b1.guid=b4.guid=b4.guid||b1.guid||bF.guid++;return b1},access:function(b0,b8,b6,b2,b5,b7){var b1=b0.length;if(typeof b8==="object"){for(var b3 in b8){bF.access(b0,b3,b8[b3],b2,b5,b6)}return b0}if(b6!==L){b2=!b7&&b2&&bF.isFunction(b6);for(var b4=0;b4<b1;b4++){b5(b0[b4],b8,b2?b6.call(b0[b4],b4,b5(b0[b4],b8)):b6,b7)}return b0}return b1?b5(b0[0],b8):L},now:function(){return(new Date()).getTime()},uaMatch:function(b1){b1=b1.toLowerCase();var b0=by.exec(b1)||bR.exec(b1)||bQ.exec(b1)||b1.indexOf("compatible")<0&&bS.exec(b1)||[];return{browser:b0[1]||"",version:b0[2]||"0"}},sub:function(){function b0(b3,b4){return new b0.fn.init(b3,b4)}bF.extend(true,b0,this);b0.superclass=this;b0.fn=b0.prototype=this();b0.fn.constructor=b0;b0.sub=this.sub;b0.fn.init=function b2(b3,b4){if(b4&&b4 instanceof bF&&!(b4 instanceof b0)){b4=b0(b4)}return bF.fn.init.call(this,b3,b4,b1)};b0.fn.init.prototype=b0.fn;var b1=b0(av);return b0},browser:{}});bF.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(b1,b0){bx["[object "+b0+"]"]=b0.toLowerCase()});bV=bF.uaMatch(bX);if(bV.browser){bF.browser[bV.browser]=true;bF.browser.version=bV.version}if(bF.browser.webkit){bF.browser.safari=true}if(bM.test("\xA0")){bI=/^[\s\xA0]+/;bE=/[\s\xA0]+$/}bD=bF(av);if(av.addEventListener){e=function(){av.removeEventListener("DOMContentLoaded",e,false);bF.ready()}}else{if(av.attachEvent){e=function(){if(av.readyState==="complete"){av.detachEvent("onreadystatechange",e);bF.ready()}}}}function bw(){if(bF.isReady){return}try{av.documentElement.doScroll("left")}catch(b0){setTimeout(bw,1);return}bF.ready()}return bF})();var a2={};function X(e){var bv=a2[e]={},bw,bx;e=e.split(/\s+/);for(bw=0,bx=e.length;bw<bx;bw++){bv[e[bw]]=true}return bv}b.Callbacks=function(bw){bw=bw?(a2[bw]||X(bw)):{};var bB=[],bC=[],bx,by,bv,bz,bA,bE=function(bF){var bG,bJ,bI,bH,bK;for(bG=0,bJ=bF.length;bG<bJ;bG++){bI=bF[bG];bH=b.type(bI);if(bH==="array"){bE(bI)}else{if(bH==="function"){if(!bw.unique||!bD.has(bI)){bB.push(bI)}}}}},e=function(bG,bF){bF=bF||[];bx=!bw.memory||[bG,bF];by=true;bA=bv||0;bv=0;bz=bB.length;for(;bB&&bA<bz;bA++){if(bB[bA].apply(bG,bF)===false&&bw.stopOnFalse){bx=true;break}}by=false;if(bB){if(!bw.once){if(bC&&bC.length){bx=bC.shift();bD.fireWith(bx[0],bx[1])}}else{if(bx===true){bD.disable()}else{bB=[]}}}},bD={add:function(){if(bB){var bF=bB.length;bE(arguments);if(by){bz=bB.length}else{if(bx&&bx!==true){bv=bF;e(bx[0],bx[1])}}}return this},remove:function(){if(bB){var bF=arguments,bH=0,bI=bF.length;for(;bH<bI;bH++){for(var bG=0;bG<bB.length;bG++){if(bF[bH]===bB[bG]){if(by){if(bG<=bz){bz--;if(bG<=bA){bA--}}}bB.splice(bG--,1);if(bw.unique){break}}}}}return this},has:function(bG){if(bB){var bF=0,bH=bB.length;for(;bF<bH;bF++){if(bG===bB[bF]){return true}}}return false},empty:function(){bB=[];return this},disable:function(){bB=bC=bx=L;return this},disabled:function(){return !bB},lock:function(){bC=L;if(!bx||bx===true){bD.disable()}return this},locked:function(){return !bC},fireWith:function(bG,bF){if(bC){if(by){if(!bw.once){bC.push([bG,bF])}}else{if(!(bw.once&&bx)){e(bG,bF)}}}return this},fire:function(){bD.fireWith(this,arguments);return this},fired:function(){return !!bx}};return bD};var aJ=[].slice;b.extend({Deferred:function(by){var bx=b.Callbacks("once memory"),bw=b.Callbacks("once memory"),bv=b.Callbacks("memory"),e="pending",bA={resolve:bx,reject:bw,notify:bv},bC={done:bx.add,fail:bw.add,progress:bv.add,state:function(){return e},isResolved:bx.fired,isRejected:bw.fired,then:function(bE,bD,bF){bB.done(bE).fail(bD).progress(bF);return this},always:function(){bB.done.apply(bB,arguments).fail.apply(bB,arguments);return this},pipe:function(bF,bE,bD){return b.Deferred(function(bG){b.each({done:[bF,"resolve"],fail:[bE,"reject"],progress:[bD,"notify"]},function(bI,bL){var bH=bL[0],bK=bL[1],bJ;if(b.isFunction(bH)){bB[bI](function(){bJ=bH.apply(this,arguments);if(bJ&&b.isFunction(bJ.promise)){bJ.promise().then(bG.resolve,bG.reject,bG.notify)}else{bG[bK+"With"](this===bB?bG:this,[bJ])}})}else{bB[bI](bG[bK])}})}).promise()},promise:function(bE){if(bE==null){bE=bC}else{for(var bD in bC){bE[bD]=bC[bD]}}return bE}},bB=bC.promise({}),bz;for(bz in bA){bB[bz]=bA[bz].fire;bB[bz+"With"]=bA[bz].fireWith}bB.done(function(){e="resolved"},bw.disable,bv.lock).fail(function(){e="rejected"},bx.disable,bv.lock);if(by){by.call(bB,bB)}return bB},when:function(bA){var bx=aJ.call(arguments,0),bv=0,e=bx.length,bB=new Array(e),bw=e,by=e,bC=e<=1&&bA&&b.isFunction(bA.promise)?bA:b.Deferred(),bE=bC.promise();function bD(bF){return function(bG){bx[bF]=arguments.length>1?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv<e;bv++){if(bx[bv]&&bx[bv].promise&&b.isFunction(bx[bv].promise)){bx[bv].promise().then(bD(bv),bC.reject,bz(bv))}else{--bw}}if(!bw){bC.resolveWith(bC,bx)}}else{if(bC!==bA){bC.resolveWith(bC,e?[bA]:[])}}return bE}});b.support=(function(){var bJ,bI,bF,bG,bx,bE,bA,bD,bz,bK,bB,by,bw,bv=av.createElement("div"),bH=av.documentElement;bv.setAttribute("className","t");bv.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="<div "+e+"><div></div></div><table "+e+" cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="<div style='width:4px;'></div>";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA<bz;bA++){delete bB[bv[bA]]}if(!(by?S:b.isEmptyObject)(bB)){return}}}if(!by){delete e[bw].data;if(!S(e[bw])){return}}if(b.support.deleteExpando||!e.setInterval){delete e[bw]}else{e[bw]=null}if(bD){if(b.support.deleteExpando){delete bx[bC]}else{if(bx.removeAttribute){bx.removeAttribute(bC)}else{bx[bC]=null}}}},_data:function(bv,e,bw){return b.data(bv,e,bw,true)},acceptData:function(bv){if(bv.nodeName){var e=b.noData[bv.nodeName.toLowerCase()];if(e){return !(e===true||bv.getAttribute("classid")!==e)}}return true}});b.fn.extend({data:function(by,bA){var bB,e,bw,bz=null;if(typeof by==="undefined"){if(this.length){bz=b.data(this[0]);if(this[0].nodeType===1&&!b._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var bx=0,bv=e.length;bx<bv;bx++){bw=e[bx].name;if(bw.indexOf("data-")===0){bw=b.camelCase(bw.substring(5));a5(this[0],bw,bz[bw])}}b._data(this[0],"parsedAttrs",true)}}return bz}else{if(typeof by==="object"){return this.each(function(){b.data(this,by)})}}bB=by.split(".");bB[1]=bB[1]?"."+bB[1]:"";if(bA===L){bz=this.triggerHandler("getData"+bB[1]+"!",[bB[0]]);if(bz===L&&this.length){bz=b.data(this[0],by);bz=a5(this[0],by,bz)}return bz===L&&bB[1]?this.data(bB[0]):bz}else{return this.each(function(){var bC=b(this),bD=[bB[0],bA];bC.triggerHandler("setData"+bB[1]+"!",bD);b.data(this,by,bA);bC.triggerHandler("changeData"+bB[1]+"!",bD)})}},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function a5(bx,bw,by){if(by===L&&bx.nodeType===1){var bv="data-"+bw.replace(aA,"-$1").toLowerCase();by=bx.getAttribute(bv);if(typeof by==="string"){try{by=by==="true"?true:by==="false"?false:by==="null"?null:b.isNumeric(by)?parseFloat(by):aS.test(by)?b.parseJSON(by):by}catch(bz){}b.data(bx,bw,by)}else{by=L}}return by}function S(bv){for(var e in bv){if(e==="data"&&b.isEmptyObject(bv[e])){continue}if(e!=="toJSON"){return false}}return true}function bi(by,bx,bA){var bw=bx+"defer",bv=bx+"queue",e=bx+"mark",bz=b._data(by,bw);if(bz&&(bA==="queue"||!b._data(by,bv))&&(bA==="mark"||!b._data(by,e))){setTimeout(function(){if(!b._data(by,bv)&&!b._data(by,e)){b.removeData(by,bw,true);bz.fire()}},0)}}b.extend({_mark:function(bv,e){if(bv){e=(e||"fx")+"mark";b._data(bv,e,(b._data(bv,e)||0)+1)}},_unmark:function(by,bx,bv){if(by!==true){bv=bx;bx=by;by=false}if(bx){bv=bv||"fx";var e=bv+"mark",bw=by?0:((b._data(bx,e)||1)-1);if(bw){b._data(bx,e,bw)}else{b.removeData(bx,e,true);bi(bx,bv,"mark")}}},queue:function(bv,e,bx){var bw;if(bv){e=(e||"fx")+"queue";bw=b._data(bv,e);if(bx){if(!bw||b.isArray(bx)){bw=b._data(bv,e,b.makeArray(bx))}else{bw.push(bx)}}return bw||[]}},dequeue:function(by,bx){bx=bx||"fx";var bv=b.queue(by,bx),bw=bv.shift(),e={};if(bw==="inprogress"){bw=bv.shift()}if(bw){if(bx==="fx"){bv.unshift("inprogress")}b._data(by,bx+".run",e);bw.call(by,function(){b.dequeue(by,bx)},e)}if(!bv.length){b.removeData(by,bx+"queue "+bx+".run",true);bi(by,bx,"queue")}}});b.fn.extend({queue:function(e,bv){if(typeof e!=="string"){bv=e;e="fx"}if(bv===L){return b.queue(this[0],e)}return this.each(function(){var bw=b.queue(this,e,bv);if(e==="fx"&&bw[0]!=="inprogress"){b.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(bv,e){bv=b.fx?b.fx.speeds[bv]||bv:bv;e=e||"fx";return this.queue(e,function(bx,bw){var by=setTimeout(bx,bv);bw.stop=function(){clearTimeout(by)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(bD,bw){if(typeof bD!=="string"){bw=bD;bD=L}bD=bD||"fx";var e=b.Deferred(),bv=this,by=bv.length,bB=1,bz=bD+"defer",bA=bD+"queue",bC=bD+"mark",bx;function bE(){if(!(--bB)){e.resolveWith(bv,[bv])}}while(by--){if((bx=b.data(bv[by],bz,L,true)||(b.data(bv[by],bA,L,true)||b.data(bv[by],bC,L,true))&&b.data(bv[by],bz,b.Callbacks("once memory"),true))){bB++;bx.add(bE)}}bE();return e.promise()}});var aP=/[\n\t\r]/g,af=/\s+/,aU=/\r/g,g=/^(?:button|input)$/i,D=/^(?:button|input|object|select|textarea)$/i,l=/^a(?:rea)?$/i,ao=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,F=b.support.getSetAttribute,be,aY,aF;b.fn.extend({attr:function(e,bv){return b.access(this,e,bv,true,b.attr)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,bv){return b.access(this,e,bv,true,b.prop)},removeProp:function(e){e=b.propFix[e]||e;return this.each(function(){try{this[e]=L;delete this[e]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,e;if(b.isFunction(by)){return this.each(function(bC){b(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by==="string"){bA=by.split(af);for(bw=0,bv=this.length;bw<bv;bw++){bx=this[bw];if(bx.nodeType===1){if(!bx.className&&bA.length===1){bx.className=by}else{bz=" "+bx.className+" ";for(bB=0,e=bA.length;bB<e;bB++){if(!~bz.indexOf(" "+bA[bB]+" ")){bz+=bA[bB]+" "}}bx.className=b.trim(bz)}}}}return this},removeClass:function(bz){var bA,bw,bv,by,bx,bB,e;if(b.isFunction(bz)){return this.each(function(bC){b(this).removeClass(bz.call(this,bC,this.className))})}if((bz&&typeof bz==="string")||bz===L){bA=(bz||"").split(af);for(bw=0,bv=this.length;bw<bv;bw++){by=this[bw];if(by.nodeType===1&&by.className){if(bz){bx=(" "+by.className+" ").replace(aP," ");for(bB=0,e=bA.length;bB<e;bB++){bx=bx.replace(" "+bA[bB]+" "," ")}by.className=b.trim(bx)}else{by.className=""}}}}return this},toggleClass:function(bx,bv){var bw=typeof bx,e=typeof bv==="boolean";if(b.isFunction(bx)){return this.each(function(by){b(this).toggleClass(bx.call(this,by,this.className,bv),bv)})}return this.each(function(){if(bw==="string"){var bA,bz=0,by=b(this),bB=bv,bC=bx.split(af);while((bA=bC[bz++])){bB=e?bB:!by.hasClass(bA);by[bB?"addClass":"removeClass"](bA)}}else{if(bw==="undefined"||bw==="boolean"){if(this.className){b._data(this,"__className__",this.className)}this.className=this.className||bx===false?"":b._data(this,"__className__")||""}}})},hasClass:function(e){var bx=" "+e+" ",bw=0,bv=this.length;for(;bw<bv;bw++){if(this[bw].nodeType===1&&(" "+this[bw].className+" ").replace(aP," ").indexOf(bx)>-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv<bz;bv++){bx=bC[bv];if(bx.selected&&(b.support.optDisabled?!bx.disabled:bx.getAttribute("disabled")===null)&&(!bx.parentNode.disabled||!b.nodeName(bx.parentNode,"optgroup"))){bA=b(bx).val();if(bw){return bA}bB.push(bA)}}if(bw&&!bB.length&&bC.length){return b(bC[by]).val()}return bB},set:function(bv,bw){var e=b.makeArray(bw);b(bv).find("option").each(function(){this.selected=b.inArray(b(this).val(),e)>=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw<e;bw++){bv=bA[bw];if(bv){by=b.propFix[bv]||bv;b.attr(bx,bv,"");bx.removeAttribute(F?bv:by);if(ao.test(bv)&&by in bx){bx[by]=false}}}}},attrHooks:{type:{set:function(e,bv){if(g.test(e.nodeName)&&e.parentNode){b.error("type property can't be changed")}else{if(!b.support.radioValue&&bv==="radio"&&b.nodeName(e,"input")){var bw=e.value;e.setAttribute("type",bv);if(bw){e.value=bw}return bv}}}},value:{get:function(bv,e){if(be&&b.nodeName(bv,"button")){return be.get(bv,e)}return e in bv?bv.value:null},set:function(bv,bw,e){if(be&&b.nodeName(bv,"button")){return be.set(bv,bw,e)}bv.value=bw}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(bz,bx,bA){var bw,e,by,bv=bz.nodeType;if(!bz||bv===3||bv===8||bv===2){return}by=bv!==1||!b.isXMLDoc(bz);if(by){bx=b.propFix[bx]||bx;e=b.propHooks[bx]}if(bA!==L){if(e&&"set" in e&&(bw=e.set(bz,bA,bx))!==L){return bw}else{return(bz[bx]=bA)}}else{if(e&&"get" in e&&(bw=e.get(bz,bx))!==null){return bw}else{return bz[bx]}}},propHooks:{tabIndex:{get:function(bv){var e=bv.getAttributeNode("tabindex");return e&&e.specified?parseInt(e.value,10):D.test(bv.nodeName)||l.test(bv.nodeName)&&bv.href?0:L}}}});b.attrHooks.tabindex=b.propHooks.tabIndex;aY={get:function(bv,e){var bx,bw=b.prop(bv,e);return bw===true||typeof bw!=="boolean"&&(bx=bv.getAttributeNode(e))&&bx.nodeValue!==false?e.toLowerCase():L},set:function(bv,bx,e){var bw;if(bx===false){b.removeAttr(bv,e)}else{bw=b.propFix[e]||e;if(bw in bv){bv[bw]=true}bv.setAttribute(e,e.toLowerCase())}return e}};if(!F){aF={name:true,id:true};be=b.valHooks.button={get:function(bw,bv){var e;e=bw.getAttributeNode(bv);return e&&(aF[bv]?e.nodeValue!=="":e.specified)?e.nodeValue:L},set:function(bw,bx,bv){var e=bw.getAttributeNode(bv);if(!e){e=av.createAttribute(bv);bw.setAttributeNode(e)}return(e.nodeValue=bx+"")}};b.attrHooks.tabindex.set=be.set;b.each(["width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{set:function(bw,bx){if(bx===""){bw.setAttribute(e,"auto");return bx}}})});b.attrHooks.contenteditable={get:be.get,set:function(bv,bw,e){if(bw===""){bw="false"}be.set(bv,bw,e)}}}if(!b.support.hrefNormalized){b.each(["href","src","width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{get:function(bx){var bw=bx.getAttribute(e,2);return bw===null?L:bw}})})}if(!b.support.style){b.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||L},set:function(e,bv){return(e.style.cssText=""+bv)}}}if(!b.support.optSelected){b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(bv){var e=bv.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!b.support.enctype){b.propFix.enctype="encoding"}if(!b.support.checkOn){b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,bv){if(b.isArray(bv)){return(e.checked=b.inArray(b(e).val(),bv)>=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI<bC.length;bI++){bH=n.exec(bC[bI])||[];bF=bH[1];e=(bH[2]||"").split(".").sort();bE=b.event.special[bF]||{};bF=(by?bE.delegateType:bE.bindType)||bF;bE=b.event.special[bF]||{};bG=b.extend({type:bF,origType:bH[1],data:bA,handler:bJ,guid:bJ.guid,selector:by,quick:Y(by),namespace:e.join(".")},bv);bw=bK[bF];if(!bw){bw=bK[bF]=[];bw.delegateCount=0;if(!bE.setup||bE.setup.call(bx,bA,e,bB)===false){if(bx.addEventListener){bx.addEventListener(bF,bB,false)}else{if(bx.attachEvent){bx.attachEvent("on"+bF,bB)}}}}if(bE.add){bE.add.call(bx,bG);if(!bG.handler.guid){bG.handler.guid=bJ.guid}}if(by){bw.splice(bw.delegateCount++,0,bG)}else{bw.push(bG)}b.event.global[bF]=true}bx=null},global:{},remove:function(bJ,bE,bv,bH,bB){var bI=b.hasData(bJ)&&b._data(bJ),bF,bx,bz,bL,bC,bA,bG,bw,by,bK,bD,e;if(!bI||!(bw=bI.events)){return}bE=b.trim(bt(bE||"")).split(" ");for(bF=0;bF<bE.length;bF++){bx=n.exec(bE[bF])||[];bz=bL=bx[1];bC=bx[2];if(!bz){for(bz in bw){b.event.remove(bJ,bz+bE[bF],bv,bH,true)}continue}by=b.event.special[bz]||{};bz=(bH?by.delegateType:by.bindType)||bz;bD=bw[bz]||[];bA=bD.length;bC=bC?new RegExp("(^|\\.)"+bC.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(bG=0;bG<bD.length;bG++){e=bD[bG];if((bB||bL===e.origType)&&(!bv||bv.guid===e.guid)&&(!bC||bC.test(e.namespace))&&(!bH||bH===e.selector||bH==="**"&&e.selector)){bD.splice(bG--,1);if(e.selector){bD.delegateCount--}if(by.remove){by.remove.call(bJ,e)}}}if(bD.length===0&&bA!==bD.length){if(!by.teardown||by.teardown.call(bJ,bC)===false){b.removeEvent(bJ,bz,bI.handle)}delete bw[bz]}}if(b.isEmptyObject(bw)){bK=bI.handle;if(bK){bK.elem=null}b.removeData(bJ,["events","handle"],true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bv,bD,bA,bJ){if(bA&&(bA.nodeType===3||bA.nodeType===8)){return}var bG=bv.type||bv,bx=[],e,bw,bC,bH,bz,by,bF,bE,bB,bI;if(T.test(bG+b.event.triggered)){return}if(bG.indexOf("!")>=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bC<bB.length&&!bv.isPropagationStopped();bC++){bH=bB[bC][0];bv.type=bB[bC][1];bE=(b._data(bH,"events")||{})[bv.type]&&b._data(bH,"handle");if(bE){bE.apply(bH,bD)}bE=by&&bH[by];if(bE&&b.acceptData(bH)&&bE.apply(bH,bD)===false){bv.preventDefault()}}bv.type=bG;if(!bJ&&!bv.isDefaultPrevented()){if((!bF._default||bF._default.apply(bA.ownerDocument,bD)===false)&&!(bG==="click"&&b.nodeName(bA,"a"))&&b.acceptData(bA)){if(by&&bA[bG]&&((bG!=="focus"&&bG!=="blur")||bv.target.offsetWidth!==0)&&!b.isWindow(bA)){bz=bA[by];if(bz){bA[by]=null}b.event.triggered=bG;bA[bG]();b.event.triggered=L;if(bz){bA[by]=bz}}}}return bv.result},dispatch:function(e){e=b.event.fix(e||bb.event);var bz=((b._data(this,"events")||{})[e.type]||[]),bA=bz.delegateCount,bG=[].slice.call(arguments,0),by=!e.exclusive&&!e.namespace,bH=[],bC,bB,bK,bx,bF,bE,bv,bD,bI,bw,bJ;bG[0]=e;e.delegateTarget=this;if(bA&&!e.target.disabled&&!(e.button&&e.type==="click")){bx=b(this);bx.context=this.ownerDocument||this;for(bK=e.target;bK!=this;bK=bK.parentNode||this){bE={};bD=[];bx[0]=bK;for(bC=0;bC<bA;bC++){bI=bz[bC];bw=bI.selector;if(bE[bw]===L){bE[bw]=(bI.quick?j(bK,bI.quick):bx.is(bw))}if(bE[bw]){bD.push(bI)}}if(bD.length){bH.push({elem:bK,matches:bD})}}}if(bz.length>bA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC<bH.length&&!e.isPropagationStopped();bC++){bv=bH[bC];e.currentTarget=bv.elem;for(bB=0;bB<bv.matches.length&&!e.isImmediatePropagationStopped();bB++){bI=bv.matches[bB];if(by||(!e.namespace&&!bI.namespace)||e.namespace_re&&e.namespace_re.test(bI.namespace)){e.data=bI.data;e.handleObj=bI;bF=((b.event.special[bI.origType]||{}).handle||bI.handler).apply(bv.elem,bG);if(bF!==L){e.result=bF;if(bF===false){e.preventDefault();e.stopPropagation()}}}}}return e.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(bv,e){if(bv.which==null){bv.which=e.charCode!=null?e.charCode:e.keyCode}return bv}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(bx,bw){var by,bz,e,bv=bw.button,bA=bw.fromElement;if(bx.pageX==null&&bw.clientX!=null){by=bx.target.ownerDocument||av;bz=by.documentElement;e=by.body;bx.pageX=bw.clientX+(bz&&bz.scrollLeft||e&&e.scrollLeft||0)-(bz&&bz.clientLeft||e&&e.clientLeft||0);bx.pageY=bw.clientY+(bz&&bz.scrollTop||e&&e.scrollTop||0)-(bz&&bz.clientTop||e&&e.clientTop||0)}if(!bx.relatedTarget&&bA){bx.relatedTarget=bA===bx.target?bw.toElement:bA}if(!bx.which&&bv!==L){bx.which=(bv&1?1:(bv&2?3:(bv&4?2:0)))}return bx}},fix:function(bw){if(bw[b.expando]){return bw}var bv,bz,e=bw,bx=b.event.fixHooks[bw.type]||{},by=bx.props?this.props.concat(bx.props):this.props;bw=b.Event(e);for(bv=by.length;bv;){bz=by[--bv];bw[bz]=e[bz]}if(!bw.target){bw.target=e.srcElement||av}if(bw.target.nodeType===3){bw.target=bw.target.parentNode}if(bw.metaKey===L){bw.metaKey=bw.ctrlKey}return bx.filter?bx.filter(bw,e):bw},special:{ready:{setup:b.bindReady},load:{noBubble:true},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(bw,bv,e){if(b.isWindow(this)){this.onbeforeunload=e}},teardown:function(bv,e){if(this.onbeforeunload===e){this.onbeforeunload=null}}}},simulate:function(bw,by,bx,bv){var bz=b.extend(new b.Event(),bx,{type:bw,isSimulated:true,originalEvent:{}});if(bv){b.event.trigger(bz,null,by)}else{b.event.dispatch.call(by,bz)}if(bz.isDefaultPrevented()){bx.preventDefault()}}};b.event.handle=b.event.dispatch;b.removeEvent=av.removeEventListener?function(bv,e,bw){if(bv.removeEventListener){bv.removeEventListener(e,bw,false)}}:function(bv,e,bw){if(bv.detachEvent){bv.detachEvent("on"+e,bw)}};b.Event=function(bv,e){if(!(this instanceof b.Event)){return new b.Event(bv,e)}if(bv&&bv.type){this.originalEvent=bv;this.type=bv.type;this.isDefaultPrevented=(bv.defaultPrevented||bv.returnValue===false||bv.getPreventDefault&&bv.getPreventDefault())?i:bk}else{this.type=bv}if(e){b.extend(this,e)}this.timeStamp=bv&&bv.timeStamp||b.now();this[b.expando]=true};function bk(){return false}function i(){return true}b.Event.prototype={preventDefault:function(){this.isDefaultPrevented=i;var bv=this.originalEvent;if(!bv){return}if(bv.preventDefault){bv.preventDefault()}else{bv.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=i;var bv=this.originalEvent;if(!bv){return}if(bv.stopPropagation){bv.stopPropagation()}bv.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i;this.stopPropagation()},isDefaultPrevented:bk,isPropagationStopped:bk,isImmediatePropagationStopped:bk};b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(bv,e){b.event.special[bv]={delegateType:e,bindType:e,handle:function(bz){var bB=this,bA=bz.relatedTarget,by=bz.handleObj,bw=by.selector,bx;if(!bA||(bA!==bB&&!b.contains(bB,bA))){bz.type=by.origType;bx=by.handler.apply(this,arguments);bz.type=e}return bx}}});if(!b.support.submitBubbles){b.event.special.submit={setup:function(){if(b.nodeName(this,"form")){return false}b.event.add(this,"click._submit keypress._submit",function(bx){var bw=bx.target,bv=b.nodeName(bw,"input")||b.nodeName(bw,"button")?bw.form:L;if(bv&&!bv._submit_attached){b.event.add(bv,"submit._submit",function(e){if(this.parentNode&&!e.isTrigger){b.event.simulate("submit",this.parentNode,e,true)}});bv._submit_attached=true}})},teardown:function(){if(b.nodeName(this,"form")){return false}b.event.remove(this,"._submit")}}}if(!b.support.changeBubbles){b.event.special.change={setup:function(){if(bd.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){b.event.add(this,"propertychange._change",function(e){if(e.originalEvent.propertyName==="checked"){this._just_changed=true}});b.event.add(this,"click._change",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false;b.event.simulate("change",this,e,true)}})}return false}b.event.add(this,"beforeactivate._change",function(bw){var bv=bw.target;if(bd.test(bv.nodeName)&&!bv._change_attached){b.event.add(bv,"change._change",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){b.event.simulate("change",this.parentNode,e,true)}});bv._change_attached=true}})},handle:function(bv){var e=bv.target;if(this!==e||bv.isSimulated||bv.isTrigger||(e.type!=="radio"&&e.type!=="checkbox")){return bv.handleObj.handler.apply(this,arguments)}},teardown:function(){b.event.remove(this,"._change");return bd.test(this.nodeName)}}}if(!b.support.focusinBubbles){b.each({focus:"focusin",blur:"focusout"},function(bx,e){var bv=0,bw=function(by){b.event.simulate(e,by.target,b.event.fix(by),true)};b.event.special[e]={setup:function(){if(bv++===0){av.addEventListener(bx,bw,true)}},teardown:function(){if(--bv===0){av.removeEventListener(bx,bw,true)}}}})}b.fn.extend({on:function(bw,e,bz,by,bv){var bA,bx;if(typeof bw==="object"){if(typeof e!=="string"){bz=e;e=L}for(bx in bw){this.on(bx,e,bz,bw[bx],bv)}return this}if(bz==null&&by==null){by=e;bz=e=L}else{if(by==null){if(typeof e==="string"){by=bz;bz=L}else{by=bz;bz=e;e=L}}}if(by===false){by=bk}else{if(!by){return this}}if(bv===1){bA=by;by=function(bB){b().off(bB);return bA.apply(this,arguments)};by.guid=bA.guid||(bA.guid=b.guid++)}return this.each(function(){b.event.add(this,bw,by,bz,e)})},one:function(bv,e,bx,bw){return this.on.call(this,bv,e,bx,bw,1)},off:function(bw,e,by){if(bw&&bw.preventDefault&&bw.handleObj){var bv=bw.handleObj;b(bw.delegateTarget).off(bv.namespace?bv.type+"."+bv.namespace:bv.type,bv.selector,bv.handler);return this}if(typeof bw==="object"){for(var bx in bw){this.off(bx,e,bw[bx])}return this}if(e===false||typeof e==="function"){by=e;e=L}if(by===false){by=bk}return this.each(function(){b.event.remove(this,bw,by,e)})},bind:function(e,bw,bv){return this.on(e,null,bw,bv)},unbind:function(e,bv){return this.off(e,null,bv)},live:function(e,bw,bv){b(this.context).on(e,this.selector,bw,bv);return this},die:function(e,bv){b(this.context).off(e,this.selector||"**",bv);return this},delegate:function(e,bv,bx,bw){return this.on(bv,e,bx,bw)},undelegate:function(e,bv,bw){return arguments.length==1?this.off(e,"**"):this.off(bv,e,bw)},trigger:function(e,bv){return this.each(function(){b.event.trigger(e,bv,this)})},triggerHandler:function(e,bv){if(this[0]){return b.event.trigger(e,bv,this[0],true)}},toggle:function(bx){var bv=arguments,e=bx.guid||b.guid++,bw=0,by=function(bz){var bA=(b._data(this,"lastToggle"+bx.guid)||0)%bw;b._data(this,"lastToggle"+bx.guid,bA+1);bz.preventDefault();return bv[bA].apply(this,arguments)||false};by.guid=e;while(bw<bv.length){bv[bw++].guid=e}return this.click(by)},hover:function(e,bv){return this.mouseenter(e).mouseleave(bv||e)}});b.each(("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu").split(" "),function(bv,e){b.fn[e]=function(bx,bw){if(bw==null){bw=bx;bx=null}return arguments.length>0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e<bR.length;e++){if(bR[e]===bR[e-1]){bR.splice(e--,1)}}}}return bR};by.matches=function(e,bR){return by(e,null,null,bR)};by.matchesSelector=function(e,bR){return by(bR,null,null,[e]).length>0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS<bU;bS++){bV=bE.order[bS];if((bT=bE.leftMatch[bV].exec(bX))){bR=bT[1];bT.splice(1,1);if(bR.substr(bR.length-1)!=="\\"){bT[1]=(bT[1]||"").replace(bK,"");bW=bE.find[bV](bT,e,bY);if(bW!=null){bX=bX.replace(bE.match[bV],"");break}}}}if(!bW){bW=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:bW,expr:bX}};by.filter=function(b1,b0,b4,bU){var bW,e,bZ,b6,b3,bR,bT,bV,b2,bS=b1,b5=[],bY=b0,bX=b0&&b0[0]&&by.isXML(b0[0]);while(b1&&b0.length){for(bZ in bE.filter){if((bW=bE.leftMatch[bZ].exec(b1))!=null&&bW[2]){bR=bE.filter[bZ];bT=bW[1];e=false;bW.splice(1,1);if(bT.substr(bT.length-1)==="\\"){continue}if(bY===b5){b5=[]}if(bE.preFilter[bZ]){bW=bE.preFilter[bZ](bW,bY,b4,b5,bU,bX);if(!bW){e=b6=true}else{if(bW===true){continue}}}if(bW){for(bV=0;(b3=bY[bV])!=null;bV++){if(b3){b6=bR(b3,bW,bV,bY);b2=bU^b6;if(b4&&b6!=null){if(b2){e=true}else{bY[bV]=false}}else{if(b2){b5.push(b3);e=true}}}}}if(b6!==L){if(!b4){bY=b5}b1=b1.replace(bE.match[bZ],"");if(!e){return[]}break}}}if(b1===bS){if(e==null){by.error(b1)}else{break}}bS=b1}return bY};by.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var bw=by.getText=function(bU){var bS,bT,e=bU.nodeType,bR="";if(e){if(e===1||e===9){if(typeof bU.textContent==="string"){return bU.textContent}else{if(typeof bU.innerText==="string"){return bU.innerText.replace(bO,"")}else{for(bU=bU.firstChild;bU;bU=bU.nextSibling){bR+=bw(bU)}}}}else{if(e===3||e===4){return bU.nodeValue}}}else{for(bS=0;(bT=bU[bS]);bS++){if(bT.nodeType!==8){bR+=bw(bT)}}}return bR};var bE=by.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(bW,bR){var bT=typeof bR==="string",bV=bT&&!bQ.test(bR),bX=bT&&!bV;if(bV){bR=bR.toLowerCase()}for(var bS=0,e=bW.length,bU;bS<e;bS++){if((bU=bW[bS])){while((bU=bU.previousSibling)&&bU.nodeType!==1){}bW[bS]=bX||bU&&bU.nodeName.toLowerCase()===bR?bU||false:bU===bR}}if(bX){by.filter(bR,bW,true)}},">":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS<e;bS++){bV=bW[bS];if(bV){var bT=bV.parentNode;bW[bS]=bT.nodeName.toLowerCase()===bR?bT:false}}}else{for(;bS<e;bS++){bV=bW[bS];if(bV){bW[bS]=bU?bV.parentNode:bV.parentNode===bR}}if(bU){by.filter(bR,bW,true)}}},"":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("parentNode",bR,bS,bT,bU,bV)},"~":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("previousSibling",bR,bS,bT,bU,bV)}},find:{ID:function(bR,bS,bT){if(typeof bS.getElementById!=="undefined"&&!bT){var e=bS.getElementById(bR[1]);return e&&e.parentNode?[e]:[]}},NAME:function(bS,bV){if(typeof bV.getElementsByName!=="undefined"){var bR=[],bU=bV.getElementsByName(bS[1]);for(var bT=0,e=bU.length;bT<e;bT++){if(bU[bT].getAttribute("name")===bS[1]){bR.push(bU[bT])}}return bR.length===0?null:bR}},TAG:function(e,bR){if(typeof bR.getElementsByTagName!=="undefined"){return bR.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(bT,bR,bS,e,bW,bX){bT=" "+bT[1].replace(bK,"")+" ";if(bX){return bT}for(var bU=0,bV;(bV=bR[bU])!=null;bU++){if(bV){if(bW^(bV.className&&(" "+bV.className+" ").replace(/[\t\n\r]/g," ").indexOf(bT)>=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bR<e[3]-0},gt:function(bS,bR,e){return bR>e[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV<bU;bV++){if(bT[bV]===bS){return false}}return true}else{by.error(e)}}}},CHILD:function(bS,bU){var bT,b0,bW,bZ,e,bV,bY,bX=bU[1],bR=bS;switch(bX){case"only":case"first":while((bR=bR.previousSibling)){if(bR.nodeType===1){return false}}if(bX==="first"){return true}bR=bS;case"last":while((bR=bR.nextSibling)){if(bR.nodeType===1){return false}}return true;case"nth":bT=bU[2];b0=bU[3];if(bT===1&&b0===0){return true}bW=bU[0];bZ=bS.parentNode;if(bZ&&(bZ[bC]!==bW||!bS.nodeIndex)){bV=0;for(bR=bZ.firstChild;bR;bR=bR.nextSibling){if(bR.nodeType===1){bR.nodeIndex=++bV}}bZ[bC]=bW}bY=bS.nodeIndex-b0;if(bT===0){return bY===0}else{return(bY%bT===0&&bY/bT>=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS<e;bS++){bR.push(bU[bS])}}else{for(;bU[bS];bS++){bR.push(bU[bS])}}}return bR}}var bJ,bG;if(av.documentElement.compareDocumentPosition){bJ=function(bR,e){if(bR===e){bB=true;return 0}if(!bR.compareDocumentPosition||!e.compareDocumentPosition){return bR.compareDocumentPosition?-1:1}return bR.compareDocumentPosition(e)&4?-1:1}}else{bJ=function(bY,bX){if(bY===bX){bB=true;return 0}else{if(bY.sourceIndex&&bX.sourceIndex){return bY.sourceIndex-bX.sourceIndex}}var bV,bR,bS=[],e=[],bU=bY.parentNode,bW=bX.parentNode,bZ=bU;if(bU===bW){return bG(bY,bX)}else{if(!bU){return -1}else{if(!bW){return 1}}}while(bZ){bS.unshift(bZ);bZ=bZ.parentNode}bZ=bW;while(bZ){e.unshift(bZ);bZ=bZ.parentNode}bV=bS.length;bR=e.length;for(var bT=0;bT<bV&&bT<bR;bT++){if(bS[bT]!==e[bT]){return bG(bS[bT],e[bT])}}return bT===bV?bG(bY,e[bT],-1):bG(bS[bT],bX,1)};bG=function(bR,e,bS){if(bR===e){return bS}var bT=bR.nextSibling;while(bT){if(bT===e){return -1}bT=bT.nextSibling}return 1}}(function(){var bR=av.createElement("div"),bS="script"+(new Date()).getTime(),e=av.documentElement;bR.innerHTML="<a name='"+bS+"'/>";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="<p class='TEST'></p>";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1&&!bY){e[bC]=bV;e.sizset=bT}if(e.nodeName.toLowerCase()===bW){bU=e;break}e=e[bR]}bZ[bT]=bU}}}function bN(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1){if(!bY){e[bC]=bV;e.sizset=bT}if(typeof bW!=="string"){if(e===bW){bU=true;break}}else{if(by.filter(bW,[e]).length>0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT<bR;bT++){by(bS,bY[bT],bX,bW)}return by.filter(bU,bX)};by.attr=b.attr;by.selectors.attrMap={};b.find=by;b.expr=by.selectors;b.expr[":"]=b.expr.filters;b.unique=by.uniqueSort;b.text=by.getText;b.isXMLDoc=by.isXML;b.contains=by.contains})();var ab=/Until$/,aq=/^(?:parents|prevUntil|prevAll)/,a9=/,/,bp=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,H=b.expr.match.POS,ay={children:true,contents:true,next:true,prev:true};b.fn.extend({find:function(e){var bw=this,by,bv;if(typeof e!=="string"){return b(e).filter(function(){for(by=0,bv=bw.length;by<bv;by++){if(b.contains(bw[by],this)){return true}}})}var bx=this.pushStack("","find",e),bA,bB,bz;for(by=0,bv=this.length;by<bv;by++){bA=bx.length;b.find(e,this[by],bx);if(by>0){for(bB=bA;bB<bx.length;bB++){for(bz=0;bz<bA;bz++){if(bx[bz]===bx[bB]){bx.splice(bB--,1);break}}}}}return bx},has:function(bv){var e=b(bv);return this.filter(function(){for(var bx=0,bw=e.length;bx<bw;bx++){if(b.contains(this,e[bx])){return true}}})},not:function(e){return this.pushStack(aG(this,e,false),"not",e)},filter:function(e){return this.pushStack(aG(this,e,true),"filter",e)},is:function(e){return !!e&&(typeof e==="string"?H.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw<by.length;bw++){if(b(bz).is(by[bw])){bv.push({selector:by[bw],elem:bz,level:bB})}}bz=bz.parentNode;bB++}return bv}var bA=H.test(by)||typeof by!=="string"?b(by,bx||this.context):0;for(bw=0,e=this.length;bw<e;bw++){bz=this[bw];while(bz){if(bA?bA.index(bz)>-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/<tbody/i,W=/<|&#?\w+;/,ae=/<(?:script|style)/i,O=/<(?:script|object|embed|option|style)/i,ah=new RegExp("<(?:"+aR+")","i"),o=/checked\s*(?:[^=]|=\s*.checked.)/i,bm=/\/(java|ecma)script/i,aN=/^\s*<!(?:\[CDATA\[|\-\-)/,ax={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div<div>","</div>"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1></$2>");try{for(var bw=0,bv=this.length;bw<bv;bw++){if(this[bw].nodeType===1){b.cleanData(this[bw].getElementsByTagName("*"));this[bw].innerHTML=bx}}}catch(by){this.empty().append(bx)}}else{if(b.isFunction(bx)){this.each(function(bz){var e=b(this);e.html(bx.call(this,bz,e.html()))})}else{this.empty().append(bx)}}}return this},replaceWith:function(e){if(this[0]&&this[0].parentNode){if(b.isFunction(e)){return this.each(function(bx){var bw=b(this),bv=bw.html();bw.replaceWith(e.call(this,bx,bv))})}if(typeof e!=="string"){e=b(e).detach()}return this.each(function(){var bw=this.nextSibling,bv=this.parentNode;b(this).remove();if(bw){b(bw).before(e)}else{b(bv).append(e)}})}else{return this.length?this.pushStack(b(b.isFunction(e)?e():e),"replaceWith",e):this}},detach:function(e){return this.remove(e,true)},domManip:function(bB,bF,bE){var bx,by,bA,bD,bC=bB[0],bv=[];if(!b.support.checkClone&&arguments.length===3&&typeof bC==="string"&&o.test(bC)){return this.each(function(){b(this).domManip(bB,bF,bE,true)})}if(b.isFunction(bC)){return this.each(function(bH){var bG=b(this);bB[0]=bC.call(this,bH,bF?bG.html():L);bG.domManip(bB,bF,bE)})}if(this[0]){bD=bC&&bC.parentNode;if(b.support.parentNode&&bD&&bD.nodeType===11&&bD.childNodes.length===this.length){bx={fragment:bD}}else{bx=b.buildFragment(bB,this,bv)}bA=bx.fragment;if(bA.childNodes.length===1){by=bA=bA.firstChild}else{by=bA.firstChild}if(by){bF=bF&&b.nodeName(by,"tr");for(var bw=0,e=this.length,bz=e-1;bw<e;bw++){bE.call(bF?ba(this[bw],by):this[bw],bx.cacheable||(e>1&&bw<bz)?b.clone(bA,true,true):bA)}}if(bv.length){b.each(bv,bo)}}return this}});function ba(e,bv){return b.nodeName(e,"table")?(e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody"))):e}function t(bB,bv){if(bv.nodeType!==1||!b.hasData(bB)){return}var by,bx,e,bA=b._data(bB),bz=b._data(bv,bA),bw=bA.events;if(bw){delete bz.handle;bz.events={};for(by in bw){for(bx=0,e=bw[by].length;bx<e;bx++){b.event.add(bv,by+(bw[by][bx].namespace?".":"")+bw[by][bx].namespace,bw[by][bx],bw[by][bx].data)}}}if(bz.data){bz.data=b.extend({},bz.data)}}function ai(bv,e){var bw;if(e.nodeType!==1){return}if(e.clearAttributes){e.clearAttributes()}if(e.mergeAttributes){e.mergeAttributes(bv)}bw=e.nodeName.toLowerCase();if(bw==="object"){e.outerHTML=bv.outerHTML}else{if(bw==="input"&&(bv.type==="checkbox"||bv.type==="radio")){if(bv.checked){e.defaultChecked=e.checked=bv.checked}if(e.value!==bv.value){e.value=bv.value}}else{if(bw==="option"){e.selected=bv.defaultSelected}else{if(bw==="input"||bw==="textarea"){e.defaultValue=bv.defaultValue}}}}e.removeAttribute(b.expando)}b.buildFragment=function(bz,bx,bv){var by,e,bw,bA,bB=bz[0];if(bx&&bx[0]){bA=bx[0].ownerDocument||bx[0]}if(!bA.createDocumentFragment){bA=av}if(bz.length===1&&typeof bB==="string"&&bB.length<512&&bA===av&&bB.charAt(0)==="<"&&!O.test(bB)&&(b.support.checkClone||!o.test(bB))&&(b.support.html5Clone||!ah.test(bB))){e=true;bw=b.fragments[bB];if(bw&&bw!==1){by=bw}}if(!by){by=bA.createDocumentFragment();b.clean(bz,bA,by,bv)}if(e){b.fragments[bB]=bw?by:1}return{fragment:by,cacheable:e}};b.fragments={};b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,bv){b.fn[e]=function(bw){var bz=[],bC=b(bw),bB=this.length===1&&this[0].parentNode;if(bB&&bB.nodeType===11&&bB.childNodes.length===1&&bC.length===1){bC[bv](this[0]);return this}else{for(var bA=0,bx=bC.length;bA<bx;bA++){var by=(bA>0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1></$2>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]==="<table>"&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB<bG;bB++){E(bz[bB])}}else{E(bz)}}if(bz.nodeType){bI.push(bz)}else{bI=b.merge(bI,bz)}}if(bH){bF=function(bL){return !bL.type||bm.test(bL.type)};for(bE=0;bI[bE];bE++){if(bA&&b.nodeName(bI[bE],"script")&&(!bI[bE].type||bI[bE].type.toLowerCase()==="text/javascript")){bA.push(bI[bE].parentNode?bI[bE].parentNode.removeChild(bI[bE]):bI[bE])}else{if(bI[bE].nodeType===1){var bJ=b.grep(bI[bE].getElementsByTagName("script"),bF);bI.splice.apply(bI,[bE+1,0].concat(bJ))}bH.appendChild(bI[bE])}}}return bI},cleanData:function(bv){var by,bw,e=b.cache,bB=b.event.special,bA=b.support.deleteExpando;for(var bz=0,bx;(bx=bv[bz])!=null;bz++){if(bx.nodeName&&b.noData[bx.nodeName.toLowerCase()]){continue}bw=bx[b.expando];if(bw){by=e[bw];if(by&&by.events){for(var bC in by.events){if(bB[bC]){b.event.remove(bx,bC)}else{b.removeEvent(bx,bC,by.handle)}}if(by.handle){by.handle.elem=null}}if(bA){delete bx[b.expando]}else{if(bx.removeAttribute){bx.removeAttribute(b.expando)}}delete e[bw]}}}});function bo(e,bv){if(bv.src){b.ajax({url:bv.src,async:false,dataType:"script"})}else{b.globalEval((bv.text||bv.textContent||bv.innerHTML||"").replace(aN,"/*$0*/"))}if(bv.parentNode){bv.parentNode.removeChild(bv)}}var ak=/alpha\([^)]*\)/i,au=/opacity=([^)]*)/,z=/([A-Z]|^ms)/g,bc=/^-?\d+(?:px)?$/i,bn=/^-?\d/,I=/^([\-+])=([\-+.\de]+)/,a7={position:"absolute",visibility:"hidden",display:"block"},an=["Left","Right"],a1=["Top","Bottom"],Z,aI,aX;b.fn.css=function(e,bv){if(arguments.length===2&&bv===L){return this}return b.access(this,e,bv,true,function(bx,bw,by){return by!==L?b.style(bx,bw,by):b.css(bx,bw)})};b.extend({cssHooks:{opacity:{get:function(bw,bv){if(bv){var e=Z(bw,"opacity","opacity");return e===""?"1":e}else{return bw.style.opacity}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(bx,bw,bD,by){if(!bx||bx.nodeType===3||bx.nodeType===8||!bx.style){return}var bB,bC,bz=b.camelCase(bw),bv=bx.style,bE=b.cssHooks[bz];bw=b.cssProps[bz]||bz;if(bD!==L){bC=typeof bD;if(bC==="string"&&(bB=I.exec(bD))){bD=(+(bB[1]+1)*+bB[2])+parseFloat(b.css(bx,bw));bC="number"}if(bD==null||bC==="number"&&isNaN(bD)){return}if(bC==="number"&&!b.cssNumber[bz]){bD+="px"}if(!bE||!("set" in bE)||(bD=bE.set(bx,bD))!==L){try{bv[bw]=bD}catch(bA){}}}else{if(bE&&"get" in bE&&(bB=bE.get(bx,false,by))!==L){return bB}return bv[bw]}},css:function(by,bx,bv){var bw,e;bx=b.camelCase(bx);e=b.cssHooks[bx];bx=b.cssProps[bx]||bx;if(bx==="cssFloat"){bx="float"}if(e&&"get" in e&&(bw=e.get(by,true,bv))!==L){return bw}else{if(Z){return Z(by,bx)}}},swap:function(bx,bw,by){var e={};for(var bv in bw){e[bv]=bx.style[bv];bx.style[bv]=bw[bv]}by.call(bx);for(bv in bw){bx.style[bv]=e[bv]}}});b.curCSS=b.css;b.each(["height","width"],function(bv,e){b.cssHooks[e]={get:function(by,bx,bw){var bz;if(bx){if(by.offsetWidth!==0){return p(by,e,bw)}else{b.swap(by,a7,function(){bz=p(by,e,bw)})}return bz}},set:function(bw,bx){if(bc.test(bx)){bx=parseFloat(bx);if(bx>=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx<e;bx++){if(!bv){bA-=parseFloat(b.css(by,"padding"+bz[bx]))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}else{bA-=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}}}return bA+"px"}bA=Z(by,bw,bw);if(bA<0||bA==null){bA=by.style[bw]||0}bA=parseFloat(bA)||0;if(bv){for(;bx<e;bx++){bA+=parseFloat(b.css(by,"padding"+bz[bx]))||0;if(bv!=="padding"){bA+=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}}}return bA+"px"}if(b.expr&&b.expr.filters){b.expr.filters.hidden=function(bw){var bv=bw.offsetWidth,e=bw.offsetHeight;return(bv===0&&e===0)||(!b.support.reliableHiddenOffsets&&((bw.style&&bw.style.display)||b.css(bw,"display"))==="none")};b.expr.filters.visible=function(e){return !b.expr.filters.hidden(e)}}var k=/%20/g,ap=/\[\]$/,bs=/\r?\n/g,bq=/#.*$/,aD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,aZ=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aM=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,aQ=/^(?:GET|HEAD)$/,c=/^\/\//,M=/\?/,a6=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw<bz;bw++){bv=bx[bw];bC=/^\+/.test(bv);if(bC){bv=bv.substr(1)||"*"}bB=e[bv]=e[bv]||[];bB[bC?"unshift":"push"](bA)}}}}function aW(bv,bE,bz,bD,bB,bx){bB=bB||bE.dataTypes[0];bx=bx||{};bx[bB]=true;var bA=bv[bB],bw=0,e=bA?bA.length:0,by=(bv===aa),bC;for(;bw<e&&(by||!bC);bw++){bC=bA[bw](bE,bz,bD);if(typeof bC==="string"){if(!by||bx[bC]){bC=L}else{bE.dataTypes.unshift(bC);bC=aW(bv,bE,bz,bD,bC,bx)}}}if((by||!bC)&&!bx["*"]){bC=aW(bv,bE,bz,bD,"*",bx)}return bC}function am(bw,bx){var bv,e,by=b.ajaxSettings.flatOptions||{};for(bv in bx){if(bx[bv]!==L){(by[bv]?bw:(e||(e={})))[bv]=bx[bv]}}if(e){b.extend(true,bw,e)}}b.fn.extend({load:function(bw,bz,bA){if(typeof bw!=="string"&&A){return A.apply(this,arguments)}else{if(!this.length){return this}}var by=bw.indexOf(" ");if(by>=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("<div>").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA<bw;bA++){if(bA===1){for(bE in bH.converters){if(typeof bE==="string"){bG[bE.toLowerCase()]=bH.converters[bE]}}}bx=bC;bC=bD[bA];if(bC==="*"){bC=bx}else{if(bx!=="*"&&bx!==bC){by=bx+" "+bC;bF=bG[by]||bG["* "+bC];if(!bF){e=L;for(bv in bG){bB=bv.split(" ");if(bB[0]===bx||bB[0]==="*"){e=bG[bB[1]+" "+bC];if(e){bv=bG[bv];if(bv===true){bF=e}else{if(e===true){bF=bv}}break}}}}if(!(bF||e)){b.error("No conversion from "+by.replace(" "," to "))}if(bF!==true){bz=bF?bF(bz):e(bv(bz))}}}}return bz}var aC=b.now(),u=/(\=)\?(&|$)|\?\?/i;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return b.expando+"_"+(aC++)}});b.ajaxPrefilter("json jsonp",function(bD,bA,bC){var bx=bD.contentType==="application/x-www-form-urlencoded"&&(typeof bD.data==="string");if(bD.dataTypes[0]==="jsonp"||bD.jsonp!==false&&(u.test(bD.url)||bx&&u.test(bD.data))){var bB,bw=bD.jsonpCallback=b.isFunction(bD.jsonpCallback)?bD.jsonpCallback():bD.jsonpCallback,bz=bb[bw],e=bD.url,by=bD.data,bv="$1"+bw+"$2";if(bD.jsonp!==false){e=e.replace(u,bv);if(bD.url===e){if(bx){by=by.replace(u,bv)}if(bD.data===by){e+=(/\?/.test(e)?"&":"?")+bD.jsonp+"="+bw}}}bD.url=e;bD.data=by;bb[bw]=function(bE){bB=[bE]};bC.always(function(){bb[bw]=bz;if(bB&&b.isFunction(bz)){bb[bw](bB[0])}});bD.converters["script json"]=function(){if(!bB){b.error(bw+" was not called")}return bB[0]};bD.dataTypes[0]="json";return"script"}});b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){b.globalEval(e);return e}}});b.ajaxPrefilter("script",function(e){if(e.cache===L){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});b.ajaxTransport("script",function(bw){if(bw.crossDomain){var e,bv=av.head||av.getElementsByTagName("head")[0]||av.documentElement;return{send:function(bx,by){e=av.createElement("script");e.async="async";if(bw.scriptCharset){e.charset=bw.scriptCharset}e.src=bw.url;e.onload=e.onreadystatechange=function(bA,bz){if(bz||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(bv&&e.parentNode){bv.removeChild(e)}e=L;if(!bz){by(200,"success")}}};bv.insertBefore(e,bv.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var B=bb.ActiveXObject?function(){for(var e in N){N[e](0,1)}}:false,y=0,N;function aL(){try{return new bb.XMLHttpRequest()}catch(bv){}}function aj(){try{return new bb.ActiveXObject("Microsoft.XMLHTTP")}catch(bv){}}b.ajaxSettings.xhr=bb.ActiveXObject?function(){return !this.isLocal&&aL()||aj()}:aL;(function(e){b.extend(b.support,{ajax:!!e,cors:!!e&&("withCredentials" in e)})})(b.ajaxSettings.xhr());if(b.support.ajax){b.ajaxTransport(function(e){if(!e.crossDomain||b.support.cors){var bv;return{send:function(bB,bw){var bA=e.xhr(),bz,by;if(e.username){bA.open(e.type,e.url,e.async,e.username,e.password)}else{bA.open(e.type,e.url,e.async)}if(e.xhrFields){for(by in e.xhrFields){bA[by]=e.xhrFields[by]}}if(e.mimeType&&bA.overrideMimeType){bA.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!bB["X-Requested-With"]){bB["X-Requested-With"]="XMLHttpRequest"}try{for(by in bB){bA.setRequestHeader(by,bB[by])}}catch(bx){}bA.send((e.hasContent&&e.data)||null);bv=function(bK,bE){var bF,bD,bC,bI,bH;try{if(bv&&(bE||bA.readyState===4)){bv=L;if(bz){bA.onreadystatechange=b.noop;if(B){delete N[bz]}}if(bE){if(bA.readyState!==4){bA.abort()}}else{bF=bA.status;bC=bA.getAllResponseHeaders();bI={};bH=bA.responseXML;if(bH&&bH.documentElement){bI.xml=bH}bI.text=bA.responseText;try{bD=bA.statusText}catch(bJ){bD=""}if(!bF&&e.isLocal&&!e.crossDomain){bF=bI.text?200:404}else{if(bF===1223){bF=204}}}}}catch(bG){if(!bE){bw(-1,bG)}}if(bI){bw(bF,bD,bI,bC)}};if(!e.async||bA.readyState===4){bv()}else{bz=++y;if(B){if(!N){N={};b(bb).unload(B)}N[bz]=bv}bA.onreadystatechange=bv}},abort:function(){if(bv){bv(0,1)}}}}})}var Q={},a8,m,aB=/^(?:toggle|show|hide)$/,aT=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,a3,aH=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],a4;b.fn.extend({show:function(bx,bA,bz){var bw,by;if(bx||bx===0){return this.animate(a0("show",3),bx,bA,bz)}else{for(var bv=0,e=this.length;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(!b._data(bw,"olddisplay")&&by==="none"){by=bw.style.display=""}if(by===""&&b.css(bw,"display")==="none"){b._data(bw,"olddisplay",x(bw.nodeName))}}}for(bv=0;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(by===""||by==="none"){bw.style.display=b._data(bw,"olddisplay")||""}}}return this}},hide:function(bx,bA,bz){if(bx||bx===0){return this.animate(a0("hide",3),bx,bA,bz)}else{var bw,by,bv=0,e=this.length;for(;bv<e;bv++){bw=this[bv];if(bw.style){by=b.css(bw,"display");if(by!=="none"&&!b._data(bw,"olddisplay")){b._data(bw,"olddisplay",by)}}}for(bv=0;bv<e;bv++){if(this[bv].style){this[bv].style.display="none"}}return this}},_toggle:b.fn.toggle,toggle:function(bw,bv,bx){var e=typeof bw==="boolean";if(b.isFunction(bw)&&b.isFunction(bv)){this._toggle.apply(this,arguments)}else{if(bw==null||e){this.each(function(){var by=e?bw:b(this).is(":hidden");b(this)[by?"show":"hide"]()})}else{this.animate(a0("toggle",3),bw,bv,bx)}}return this},fadeTo:function(e,bx,bw,bv){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:bx},e,bw,bv)},animate:function(bz,bw,by,bx){var e=b.speed(bw,by,bx);if(b.isEmptyObject(bz)){return this.each(e.complete,[false])}bz=b.extend({},bz);function bv(){if(e.queue===false){b._mark(this)}var bE=b.extend({},e),bK=this.nodeType===1,bI=bK&&b(this).is(":hidden"),bB,bF,bD,bJ,bH,bC,bG,bL,bA;bE.animatedProperties={};for(bD in bz){bB=b.camelCase(bD);if(bD!==bB){bz[bB]=bz[bD];delete bz[bD]}bF=bz[bB];if(b.isArray(bF)){bE.animatedProperties[bB]=bF[1];bF=bz[bB]=bF[0]}else{bE.animatedProperties[bB]=bE.specialEasing&&bE.specialEasing[bB]||bE.easing||"swing"}if(bF==="hide"&&bI||bF==="show"&&!bI){return bE.complete.call(this)}if(bK&&(bB==="height"||bB==="width")){bE.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(b.css(this,"display")==="inline"&&b.css(this,"float")==="none"){if(!b.support.inlineBlockNeedsLayout||x(this.nodeName)==="inline"){this.style.display="inline-block"}else{this.style.zoom=1}}}}if(bE.overflow!=null){this.style.overflow="hidden"}for(bD in bz){bJ=new b.fx(this,bE,bD);bF=bz[bD];if(aB.test(bF)){bA=b._data(this,"toggle"+bD)||(bF==="toggle"?bI?"show":"hide":0);if(bA){b._data(this,"toggle"+bD,bA==="show"?"hide":"show");bJ[bA]()}else{bJ[bF]()}}else{bH=aT.exec(bF);bC=bJ.cur();if(bH){bG=parseFloat(bH[2]);bL=bH[3]||(b.cssNumber[bD]?"":"px");if(bL!=="px"){b.style(this,bD,(bG||1)+bL);bC=((bG||1)/bJ.cur())*bC;b.style(this,bD,bC+bL)}if(bH[1]){bG=((bH[1]==="-="?-1:1)*bG)+bC}bJ.custom(bC,bG,bL)}else{bJ.custom(bC,bF,"")}}}return true}return e.queue===false?this.each(bv):this.queue(e.queue,bv)},stop:function(bw,bv,e){if(typeof bw!=="string"){e=bv;bv=bw;bw=L}if(bv&&bw!==false){this.queue(bw||"fx",[])}return this.each(function(){var bx,by=false,bA=b.timers,bz=b._data(this);if(!e){b._unmark(true,this)}function bB(bE,bF,bD){var bC=bF[bD];b.removeData(bE,bD,true);bC.stop(e)}if(bw==null){for(bx in bz){if(bz[bx]&&bz[bx].stop&&bx.indexOf(".run")===bx.length-4){bB(this,bz,bx)}}}else{if(bz[bx=bw+".run"]&&bz[bx].stop){bB(this,bz,bx)}}for(bx=bA.length;bx--;){if(bA[bx].elem===this&&(bw==null||bA[bx].queue===bw)){if(e){bA[bx](true)}else{bA[bx].saveState()}by=true;bA.splice(bx,1)}}if(!(e&&by)){b.dequeue(this,bw)}})}});function bh(){setTimeout(at,0);return(a4=b.now())}function at(){a4=L}function a0(bv,e){var bw={};b.each(aH.concat.apply([],aH.slice(0,e)),function(){bw[this]=bv});return bw}b.each({slideDown:a0("show",1),slideUp:a0("hide",1),slideToggle:a0("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,bv){b.fn[e]=function(bw,by,bx){return this.animate(bv,bw,by,bx)}});b.extend({speed:function(bw,bx,bv){var e=bw&&typeof bw==="object"?b.extend({},bw):{complete:bv||!bv&&bx||b.isFunction(bw)&&bw,duration:bw,easing:bv&&bx||bx&&!b.isFunction(bx)&&bx};e.duration=b.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in b.fx.speeds?b.fx.speeds[e.duration]:b.fx.speeds._default;if(e.queue==null||e.queue===true){e.queue="fx"}e.old=e.complete;e.complete=function(by){if(b.isFunction(e.old)){e.old.call(this)}if(e.queue){b.dequeue(this,e.queue)}else{if(by!==false){b._unmark(this)}}};return e},easing:{linear:function(bw,bx,e,bv){return e+bv*bw},swing:function(bw,bx,e,bv){return((-Math.cos(bw*Math.PI)/2)+0.5)*bv+e}},timers:[],fx:function(bv,e,bw){this.options=e;this.elem=bv;this.prop=bw;e.orig=e.orig||{}}});b.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(b.fx.step[this.prop]||b.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var e,bv=b.css(this.elem,this.prop);return isNaN(e=parseFloat(bv))?!bv||bv==="auto"?0:bv:e},custom:function(bz,by,bx){var e=this,bw=b.fx;this.startTime=a4||bh();this.end=by;this.now=this.start=bz;this.pos=this.state=0;this.unit=bx||this.unit||(b.cssNumber[this.prop]?"":"px");function bv(bA){return e.step(bA)}bv.queue=this.options.queue;bv.elem=this.elem;bv.saveState=function(){if(e.options.hide&&b._data(e.elem,"fxshow"+e.prop)===L){b._data(e.elem,"fxshow"+e.prop,e.start)}};if(bv()&&b.timers.push(bv)&&!a3){a3=setInterval(bw.tick,bw.interval)}},show:function(){var e=b._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=e||b.style(this.elem,this.prop);this.options.show=true;if(e!==L){this.custom(this.cur(),e)}else{this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur())}b(this.elem).show()},hide:function(){this.options.orig[this.prop]=b._data(this.elem,"fxshow"+this.prop)||b.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(by){var bA,bB,bv,bx=a4||bh(),e=true,bz=this.elem,bw=this.options;if(by||bx>=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e<bv.length;e++){bw=bv[e];if(!bw()&&bv[e]===bw){bv.splice(e--,1)}}if(!bv.length){b.fx.stop()}},interval:13,stop:function(){clearInterval(a3);a3=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(e){b.style(e.elem,"opacity",e.now)},_default:function(e){if(e.elem.style&&e.elem.style[e.prop]!=null){e.elem.style[e.prop]=e.now+e.unit}else{e.elem[e.prop]=e.now}}}});b.each(["width","height"],function(e,bv){b.fx.step[bv]=function(bw){b.style(bw.elem,bv,Math.max(0,bw.now)+bw.unit)}});if(b.expr&&b.expr.filters){b.expr.filters.animated=function(e){return b.grep(b.timers,function(bv){return e===bv.elem}).length}}function x(bx){if(!Q[bx]){var e=av.body,bv=b("<"+bx+">").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h<j.length;h++){if(e.options[j[h][0]]){j[h][1].apply(e.element,f)}}}},contains:function(f,e){return document.compareDocumentPosition?f.compareDocumentPosition(e)&16:f!==e&&f.contains(e)},hasScroll:function(h,f){if(a(h).css("overflow")==="hidden"){return false}var e=(f&&f==="left")?"scrollLeft":"scrollTop",g=false;if(h[e]>0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g<l.length;g++){var j=c.trim(l[g]),e="ui-resizable-"+j;var h=c('<div class="ui-resizable-handle '+e+'"></div>');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(h<e.maxWidth){e.maxWidth=h}if(k<e.maxHeight){e.maxHeight=k}}this._vBoundaries=e},_updateCache:function(e){var f=this.options;this.offset=this.helper.offset();if(a(e.left)){this.position.left=e.left}if(a(e.top)){this.position.top=e.top}if(a(e.height)){this.size.height=e.height}if(a(e.width)){this.size.width=e.width}},_updateRatio:function(h,g){var i=this.options,j=this.position,f=this.size,e=this.axis;if(a(h.height)){h.width=(h.height*this.aspectRatio)}else{if(a(h.width)){h.height=(h.width/this.aspectRatio)}}if(e=="sw"){h.left=j.left+(f.width-h.width);h.top=null}if(e=="nw"){h.top=j.top+(f.height-h.height);h.left=j.left+(f.width-h.width)}return h},_respectSize:function(l,g){var j=this.helper,i=this._vBoundaries,r=this._aspectRatio||g.shiftKey,q=this.axis,t=a(l.width)&&i.maxWidth&&(i.maxWidth<l.width),m=a(l.height)&&i.maxHeight&&(i.maxHeight<l.height),h=a(l.width)&&i.minWidth&&(i.minWidth>l.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f<this._proportionallyResizeElements.length;f++){var h=this._proportionallyResizeElements[f];if(!this.borderDif){var e=[h.css("borderTopWidth"),h.css("borderRightWidth"),h.css("borderBottomWidth"),h.css("borderLeftWidth")],j=[h.css("paddingTop"),h.css("paddingRight"),h.css("paddingBottom"),h.css("paddingLeft")];this.borderDif=c.map(e,function(l,n){var m=parseInt(l,10)||0,o=parseInt(j[n],10)||0;return m+o})}if(c.browser.msie&&!(!(c(g).is(":hidden")||c(g).parents(":hidden").length))){continue}h.css({height:(g.height()-this.borderDif[0]-this.borderDif[2])||0,width:(g.width()-this.borderDif[1]-this.borderDif[3])||0})}},_renderProxy:function(){var f=this.element,i=this.options;this.elementOffset=f.offset();if(this._helper){this.helper=this.helper||c('<div style="overflow:hidden;"></div>');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){r||l(a());n()}).attr("src",r||"javascript:0").insertAfter("body")[0].contentWindow;h.onpropertychange=function(){try{if(event.propertyName==="title"){q.document.title=h.title}}catch(s){}}}};j.stop=k;o=function(){return a(q.location.href)};l=function(v,s){var u=q.document,t=$.fn[c].domain;if(v!==s){u.title=h.title;u.open();t&&u.write('<script>document.domain="'+t+'"<\/script>');u.close();q.location.hash=v}}})();return j})()})(jQuery,this);(function(c){var a=c.scrollTo=function(f,e,d){c(window).scrollTo(f,e,d)};a.defaults={axis:"xy",duration:parseFloat(c.fn.jquery)>=1.3?0:1};a.window=function(d){return c(window)._scrollable()};c.fn._scrollable=function(){return this.map(function(){var e=this,d=!e.nodeName||c.inArray(e.nodeName.toLowerCase(),["iframe","#document","html","body"])!=-1;if(!d){return e}var f=(e.contentWindow||e).document||e.ownerDocument||e;return c.browser.safari||f.compatMode=="BackCompat"?f.body:f.documentElement})};c.fn.scrollTo=function(f,e,d){if(typeof e=="object"){d=e;e=0}if(typeof d=="function"){d={onAfter:d}}if(f=="max"){f=9000000000}d=c.extend({},a.defaults,d);e=e||d.speed||d.duration;d.queue=d.queue&&d.axis.length>1;if(d.queue){e/=2}d.offset=b(d.offset);d.over=b(d.over);return this._scrollable().each(function(){var l=this,j=c(l),k=f,i,g={},m=j.is("html,body");switch(typeof k){case"number":case"string":if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(k)){k=b(k);break}k=c(k,this);case"object":if(k.is||k.style){i=(k=c(k)).offset()}}c.each(d.axis.split(""),function(q,r){var s=r=="x"?"Left":"Top",u=s.toLowerCase(),p="scroll"+s,o=l[p],n=a.max(l,r);if(i){g[p]=i[u]+(m?0:o-j.offset()[u]);if(d.margin){g[p]-=parseInt(k.css("margin"+s))||0;g[p]-=parseInt(k.css("border"+s+"Width"))||0}g[p]+=d.offset[u]||0;if(d.over[u]){g[p]+=k[r=="x"?"width":"height"]()*d.over[u]}}else{var t=k[u];g[p]=t.slice&&t.slice(-1)=="%"?parseFloat(t)/100*n:t}if(/^\d+$/.test(g[p])){g[p]=g[p]<=0?0:Math.min(g[p],n)}if(!q&&d.queue){if(o!=g[p]){h(d.onAfterFirst)}delete g[p]}});h(d.onAfter);function h(n){j.animate(g,e,d.easing,n&&function(){n.call(this,f,d)})}}).end()};a.max=function(j,i){var h=i=="x"?"Width":"Height",e="scroll"+h;if(!c(j).is("html,body")){return j[e]-c(j)[h.toLowerCase()]()}var g="client"+h,f=j.ownerDocument.documentElement,d=j.ownerDocument.body;return Math.max(f[e],d[e])-Math.min(f[g],d[g])};function b(d){return typeof d=="object"?d:{top:d,left:d}}})(jQuery);/*! + PowerTip - v1.2.0 - 2013-04-03 + http://stevenbenner.github.com/jquery-powertip/ + Copyright (c) 2013 Steven Benner (http://stevenbenner.com/). + Released under MIT license. + https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt +*/ +(function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{a(jQuery)}}(function(k){var A=k(document),s=k(window),w=k("body");var n="displayController",e="hasActiveHover",d="forcedOpen",u="hasMouseMove",f="mouseOnToPopup",g="originalTitle",y="powertip",o="powertipjq",l="powertiptarget",E=180/Math.PI;var c={isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,mouseTrackingActive:false,delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var p={none:0,top:1,bottom:2,left:4,right:8};k.fn.powerTip=function(F,N){if(!this.length){return this}if(k.type(F)==="string"&&k.powerTip[F]){return k.powerTip[F].call(this,this,N)}var O=k.extend({},k.fn.powerTip.defaults,F),G=new x(O);h();this.each(function M(){var R=k(this),Q=R.data(y),P=R.data(o),T=R.data(l),S;if(R.data(n)){k.powerTip.destroy(R)}S=R.attr("title");if(!Q&&!T&&!P&&S){R.data(y,S);R.data(g,S);R.removeAttr("title")}R.data(n,new t(R,O,G))});if(!O.manual){this.on({"mouseenter.powertip":function J(P){k.powerTip.show(this,P)},"mouseleave.powertip":function L(){k.powerTip.hide(this)},"focus.powertip":function K(){k.powerTip.show(this)},"blur.powertip":function H(){k.powerTip.hide(this,true)},"keydown.powertip":function I(P){if(P.keyCode===27){k.powerTip.hide(this,true)}}})}return this};k.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false};k.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};k.powerTip={show:function z(F,G){if(G){i(G);c.previousX=G.pageX;c.previousY=G.pageY;k(F).data(n).show()}else{k(F).first().data(n).show(true,true)}return F},reposition:function r(F){k(F).first().data(n).resetPosition();return F},hide:function D(G,F){if(G){k(G).first().data(n).hide(F)}else{if(c.activeHover){c.activeHover.data(n).hide(true)}}return G},destroy:function C(G){k(G).off(".powertip").each(function F(){var I=k(this),H=[g,n,e,d];if(I.data(g)){I.attr("title",I.data(g));H.push(y)}I.removeData(H)});return G}};k.powerTip.showTip=k.powerTip.show;k.powerTip.closeTip=k.powerTip.hide;function b(){var F=this;F.top="auto";F.left="auto";F.right="auto";F.bottom="auto";F.set=function(H,G){if(k.isNumeric(G)){F[H]=Math.round(G)}}}function t(K,N,F){var J=null;function L(P,Q){M();if(!K.data(e)){if(!P){c.tipOpenImminent=true;J=setTimeout(function O(){J=null;I()},N.intentPollInterval)}else{if(Q){K.data(d,true)}F.showTip(K)}}}function G(P){M();c.tipOpenImminent=false;if(K.data(e)){K.data(d,false);if(!P){c.delayInProgress=true;J=setTimeout(function O(){J=null;F.hideTip(K);c.delayInProgress=false},N.closeDelay)}else{F.hideTip(K)}}}function I(){var Q=Math.abs(c.previousX-c.currentX),O=Math.abs(c.previousY-c.currentY),P=Q+O;if(P<N.intentSensitivity){F.showTip(K)}else{c.previousX=c.currentX;c.previousY=c.currentY;L()}}function M(){J=clearTimeout(J);c.delayInProgress=false}function H(){F.resetPosition(K)}this.show=L;this.hide=G;this.cancel=M;this.resetPosition=H}function j(){function G(M,L,J,O,P){var K=L.split("-")[0],N=new b(),I;if(q(M)){I=H(M,K)}else{I=F(M,K)}switch(L){case"n":N.set("left",I.left-(J/2));N.set("bottom",c.windowHeight-I.top+P);break;case"e":N.set("left",I.left+P);N.set("top",I.top-(O/2));break;case"s":N.set("left",I.left-(J/2));N.set("top",I.top+P);break;case"w":N.set("top",I.top-(O/2));N.set("right",c.windowWidth-I.left+P);break;case"nw":N.set("bottom",c.windowHeight-I.top+P);N.set("right",c.windowWidth-I.left-20);break;case"nw-alt":N.set("left",I.left);N.set("bottom",c.windowHeight-I.top+P);break;case"ne":N.set("left",I.left-20);N.set("bottom",c.windowHeight-I.top+P);break;case"ne-alt":N.set("bottom",c.windowHeight-I.top+P);N.set("right",c.windowWidth-I.left);break;case"sw":N.set("top",I.top+P);N.set("right",c.windowWidth-I.left-20);break;case"sw-alt":N.set("left",I.left);N.set("top",I.top+P);break;case"se":N.set("left",I.left-20);N.set("top",I.top+P);break;case"se-alt":N.set("top",I.top+P);N.set("right",c.windowWidth-I.left);break}return N}function F(K,J){var O=K.offset(),N=K.outerWidth(),I=K.outerHeight(),M,L;switch(J){case"n":M=O.left+N/2;L=O.top;break;case"e":M=O.left+N;L=O.top+I/2;break;case"s":M=O.left+N/2;L=O.top+I;break;case"w":M=O.left;L=O.top+I/2;break;case"nw":M=O.left;L=O.top;break;case"ne":M=O.left+N;L=O.top;break;case"sw":M=O.left;L=O.top+I;break;case"se":M=O.left+N;L=O.top+I;break}return{top:L,left:M}}function H(O,K){var S=O.closest("svg")[0],N=O[0],W=S.createSVGPoint(),L=N.getBBox(),V=N.getScreenCTM(),M=L.width/2,Q=L.height/2,P=[],I=["nw","n","ne","e","se","s","sw","w"],U,X,R,T;function J(){P.push(W.matrixTransform(V))}W.x=L.x;W.y=L.y;J();W.x+=M;J();W.x+=M;J();W.y+=Q;J();W.y+=Q;J();W.x-=M;J();W.x-=M;J();W.y-=Q;J();if(P[0].y!==P[1].y||P[0].x!==P[7].x){X=Math.atan2(V.b,V.a)*E;R=Math.ceil(((X%360)-22.5)/45);if(R<1){R+=8}while(R--){I.push(I.shift())}}for(T=0;T<P.length;T++){if(I[T]===K){U=P[T];break}}return{top:U.y+c.scrollTop,left:U.x+c.scrollLeft}}this.compute=G}function x(Q){var P=new j(),O=k("#"+Q.popupId);if(O.length===0){O=k("<div/>",{id:Q.popupId});if(w.length===0){w=k("body")}w.append(O)}if(Q.followMouse){if(!O.data(u)){A.on("mousemove",M);s.on("scroll",M);O.data(u,true)}}if(Q.mouseOnToPopup){O.on({mouseenter:function L(){if(O.data(f)){if(c.activeHover){c.activeHover.data(n).cancel()}}},mouseleave:function N(){if(c.activeHover){c.activeHover.data(n).hide()}}})}function I(S){S.data(e,true);O.queue(function R(T){H(S);T()})}function H(S){var U;if(!S.data(e)){return}if(c.isTipOpen){if(!c.isClosing){K(c.activeHover)}O.delay(100).queue(function R(V){H(S);V()});return}S.trigger("powerTipPreRender");U=B(S);if(U){O.empty().append(U)}else{return}S.trigger("powerTipRender");c.activeHover=S;c.isTipOpen=true;O.data(f,Q.mouseOnToPopup);if(!Q.followMouse){G(S);c.isFixedTipOpen=true}else{M()}O.fadeIn(Q.fadeInTime,function T(){if(!c.desyncTimeout){c.desyncTimeout=setInterval(J,500)}S.trigger("powerTipOpen")})}function K(R){c.isClosing=true;c.activeHover=null;c.isTipOpen=false;c.desyncTimeout=clearInterval(c.desyncTimeout);R.data(e,false);R.data(d,false);O.fadeOut(Q.fadeOutTime,function S(){var T=new b();c.isClosing=false;c.isFixedTipOpen=false;O.removeClass();T.set("top",c.currentY+Q.offset);T.set("left",c.currentX+Q.offset);O.css(T);R.trigger("powerTipClose")})}function M(){if(!c.isFixedTipOpen&&(c.isTipOpen||(c.tipOpenImminent&&O.data(u)))){var R=O.outerWidth(),V=O.outerHeight(),U=new b(),S,T;U.set("top",c.currentY+Q.offset);U.set("left",c.currentX+Q.offset);S=m(U,R,V);if(S!==p.none){T=a(S);if(T===1){if(S===p.right){U.set("left",c.windowWidth-R)}else{if(S===p.bottom){U.set("top",c.scrollTop+c.windowHeight-V)}}}else{U.set("left",c.currentX-R-Q.offset);U.set("top",c.currentY-V-Q.offset)}}O.css(U)}}function G(S){var R,T;if(Q.smartPlacement){R=k.fn.powerTip.smartPlacementLists[Q.placement];k.each(R,function(U,W){var V=m(F(S,W),O.outerWidth(),O.outerHeight());T=W;if(V===p.none){return false}})}else{F(S,Q.placement);T=Q.placement}O.addClass(T)}function F(U,T){var R=0,S,W,V=new b();V.set("top",0);V.set("left",0);O.css(V);do{S=O.outerWidth();W=O.outerHeight();V=P.compute(U,T,S,W,Q.offset);O.css(V)}while(++R<=5&&(S!==O.outerWidth()||W!==O.outerHeight()));return V}function J(){var R=false;if(c.isTipOpen&&!c.isClosing&&!c.delayInProgress){if(c.activeHover.data(e)===false||c.activeHover.is(":disabled")){R=true}else{if(!v(c.activeHover)&&!c.activeHover.is(":focus")&&!c.activeHover.data(d)){if(O.data(f)){if(!v(O)){R=true}}else{R=true}}}if(R){K(c.activeHover)}}}this.showTip=I;this.hideTip=K;this.resetPosition=G}function q(F){return window.SVGElement&&F[0] instanceof SVGElement}function h(){if(!c.mouseTrackingActive){c.mouseTrackingActive=true;k(function H(){c.scrollLeft=s.scrollLeft();c.scrollTop=s.scrollTop();c.windowWidth=s.width();c.windowHeight=s.height()});A.on("mousemove",i);s.on({resize:function G(){c.windowWidth=s.width();c.windowHeight=s.height()},scroll:function F(){var I=s.scrollLeft(),J=s.scrollTop();if(I!==c.scrollLeft){c.currentX+=I-c.scrollLeft;c.scrollLeft=I}if(J!==c.scrollTop){c.currentY+=J-c.scrollTop;c.scrollTop=J}}})}}function i(F){c.currentX=F.pageX;c.currentY=F.pageY}function v(F){var H=F.offset(),J=F[0].getBoundingClientRect(),I=J.right-J.left,G=J.bottom-J.top;return c.currentX>=H.left&&c.currentX<=H.left+I&&c.currentY>=H.top&&c.currentY<=H.top+G}function B(I){var G=I.data(y),F=I.data(o),K=I.data(l),H,J;if(G){if(k.isFunction(G)){G=G.call(I[0])}J=G}else{if(F){if(k.isFunction(F)){F=F.call(I[0])}if(F.length>0){J=F.clone(true,true)}}else{if(K){H=k("#"+K);if(H.length>0){J=H.html()}}}}return J}function m(M,L,K){var G=c.scrollTop,J=c.scrollLeft,I=G+c.windowHeight,F=J+c.windowWidth,H=p.none;if(M.top<G||Math.abs(M.bottom-c.windowHeight)-K<G){H|=p.top}if(M.top+K>I||Math.abs(M.bottom-c.windowHeight)>I){H|=p.bottom}if(M.left<J||M.right+L>F){H|=p.left}if(M.left+L>F||M.right<J){H|=p.right}return H}function a(G){var F=0;while(G){G&=G-1;F++}return F}}));
\ No newline at end of file diff --git a/doc/_static/api/nav_f.png b/doc/_static/api/nav_f.png Binary files differnew file mode 100644 index 0000000..947685f --- /dev/null +++ b/doc/_static/api/nav_f.png diff --git a/doc/_static/api/nav_g.png b/doc/_static/api/nav_g.png Binary files differnew file mode 100644 index 0000000..2093a23 --- /dev/null +++ b/doc/_static/api/nav_g.png diff --git a/doc/_static/api/nav_h.png b/doc/_static/api/nav_h.png Binary files differnew file mode 100644 index 0000000..0079c13 --- /dev/null +++ b/doc/_static/api/nav_h.png diff --git a/doc/_static/api/nvidia.png b/doc/_static/api/nvidia.png Binary files differnew file mode 100644 index 0000000..0808daa --- /dev/null +++ b/doc/_static/api/nvidia.png diff --git a/doc/_static/api/open.png b/doc/_static/api/open.png Binary files differnew file mode 100644 index 0000000..69c1c97 --- /dev/null +++ b/doc/_static/api/open.png diff --git a/doc/_static/api/splitbar.png b/doc/_static/api/splitbar.png Binary files differnew file mode 100644 index 0000000..4e00de7 --- /dev/null +++ b/doc/_static/api/splitbar.png diff --git a/doc/_static/api/struct_nv_flex_solver_callback.html b/doc/_static/api/struct_nv_flex_solver_callback.html new file mode 100644 index 0000000..d96d2d2 --- /dev/null +++ b/doc/_static/api/struct_nv_flex_solver_callback.html @@ -0,0 +1,85 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.9.1"/> +<title>FLEX: NvFlexSolverCallback Struct Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +<link href="flex.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">FLEX +  <span id="projectnumber">1.1.0</span> + </div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.9.1 --> +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#pub-attribs">Data Fields</a> </div> + <div class="headertitle"> +<div class="title">NvFlexSolverCallback Struct Reference</div> </div> +</div><!--header--> +<div class="contents"> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> +Data Fields</h2></td></tr> +<tr class="memitem:a2878301f697313b3ef3ad1bc2410c915"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_solver_callback.html#a2878301f697313b3ef3ad1bc2410c915">userData</a></td></tr> +<tr class="separator:a2878301f697313b3ef3ad1bc2410c915"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a728134bf4d667b207539d7318e42e92a"><td class="memItemLeft" align="right" valign="top">void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_solver_callback.html#a728134bf4d667b207539d7318e42e92a">function</a> )(<a class="el" href="_nv_flex_8h.html#struct_nv_flex_solver_callback_params">NvFlexSolverCallbackParams</a> params)</td></tr> +<tr class="separator:a728134bf4d667b207539d7318e42e92a"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> +<div class="textblock"><p>Solver callback definition, see <a class="el" href="_nv_flex_8h.html#ac5427457488ab3f2de91cf65335dda08">NvFlexRegisterSolverCallback()</a> </p> +</div><h2 class="groupheader">Field Documentation</h2> +<a class="anchor" id="a2878301f697313b3ef3ad1bc2410c915"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void* NvFlexSolverCallback::userData</td> + </tr> + </table> +</div><div class="memdoc"> +<p>User data passed to the callback </p> + +</div> +</div> +<a class="anchor" id="a728134bf4d667b207539d7318e42e92a"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void(* NvFlexSolverCallback::function) (<a class="el" href="_nv_flex_8h.html#struct_nv_flex_solver_callback_params">NvFlexSolverCallbackParams</a> params)</td> + </tr> + </table> +</div><div class="memdoc"> +<p>Function pointer to a callback method </p> + +</div> +</div> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Wed Feb 22 2017 12:18:22 for FLEX by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.9.1 +</small></address> +</body> +</html> diff --git a/doc/_static/api/struct_nv_flex_vector.html b/doc/_static/api/struct_nv_flex_vector.html new file mode 100644 index 0000000..fa3a3d8 --- /dev/null +++ b/doc/_static/api/struct_nv_flex_vector.html @@ -0,0 +1,693 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.9.1"/> +<title>FLEX: NvFlexVector< T > Struct Template Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +<link href="flex.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">FLEX +  <span id="projectnumber">1.1.0</span> + </div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.9.1 --> +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> | +<a href="#pub-attribs">Data Fields</a> </div> + <div class="headertitle"> +<div class="title">NvFlexVector< T > Struct Template Reference</div> </div> +</div><!--header--> +<div class="contents"> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr class="memitem:a9d7ff86aeebc0fcfa5c125d7872e2e3b"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a9d7ff86aeebc0fcfa5c125d7872e2e3b">NvFlexVector</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *l, int <a class="el" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">size</a>=0)</td></tr> +<tr class="separator:a9d7ff86aeebc0fcfa5c125d7872e2e3b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a026d8fcd71bb256610401cc861345428"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a026d8fcd71bb256610401cc861345428">NvFlexVector</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *l, const T *ptr, int <a class="el" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">size</a>)</td></tr> +<tr class="separator:a026d8fcd71bb256610401cc861345428"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:afb9c0f47544c0cdebe21efb6908dd3a0"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#afb9c0f47544c0cdebe21efb6908dd3a0">~NvFlexVector</a> ()</td></tr> +<tr class="separator:afb9c0f47544c0cdebe21efb6908dd3a0"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a0309d584abbe900d3af3823a79e89ee7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a0309d584abbe900d3af3823a79e89ee7">init</a> (int <a class="el" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">size</a>)</td></tr> +<tr class="separator:a0309d584abbe900d3af3823a79e89ee7"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ade3c494ee6e75e54a6ba73d6bc100bd9"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#ade3c494ee6e75e54a6ba73d6bc100bd9">destroy</a> ()</td></tr> +<tr class="separator:ade3c494ee6e75e54a6ba73d6bc100bd9"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a56640fd10b06a4024a4bf01c306c436b"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a56640fd10b06a4024a4bf01c306c436b">map</a> (int flags=<a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">eNvFlexMapWait</a>)</td></tr> +<tr class="separator:a56640fd10b06a4024a4bf01c306c436b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:afca9914468beb61f6c98bc052e2af5e0"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#afca9914468beb61f6c98bc052e2af5e0">unmap</a> ()</td></tr> +<tr class="separator:afca9914468beb61f6c98bc052e2af5e0"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3871fbd5422c9b3f41bd5dc2046e1aa7"><td class="memItemLeft" align="right" valign="top">const T & </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a3871fbd5422c9b3f41bd5dc2046e1aa7">operator[]</a> (int index) const </td></tr> +<tr class="separator:a3871fbd5422c9b3f41bd5dc2046e1aa7"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a769d5ad0723a3fceac7951967e8b4d03"><td class="memItemLeft" align="right" valign="top">T & </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a769d5ad0723a3fceac7951967e8b4d03">operator[]</a> (int index)</td></tr> +<tr class="separator:a769d5ad0723a3fceac7951967e8b4d03"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a98584303358b70fd12ead231cd750335"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a98584303358b70fd12ead231cd750335">push_back</a> (const T &t)</td></tr> +<tr class="separator:a98584303358b70fd12ead231cd750335"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:acd29b9b2b27e53e3640c24da6959e3cd"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#acd29b9b2b27e53e3640c24da6959e3cd">assign</a> (const T *srcPtr, int newCount)</td></tr> +<tr class="separator:acd29b9b2b27e53e3640c24da6959e3cd"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a225da2c753ca0bb95b570c303f0cd761"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a225da2c753ca0bb95b570c303f0cd761">copyto</a> (T *dest, int <a class="el" href="struct_nv_flex_vector.html#ad462ae46f0270161c79572762b558124">count</a>)</td></tr> +<tr class="separator:a225da2c753ca0bb95b570c303f0cd761"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a1933b633e9055d9adf8b62c4aa8a3bc0"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">size</a> () const </td></tr> +<tr class="separator:a1933b633e9055d9adf8b62c4aa8a3bc0"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a73f78b1efc76c96666a96a79064670c5"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a73f78b1efc76c96666a96a79064670c5">empty</a> () const </td></tr> +<tr class="separator:a73f78b1efc76c96666a96a79064670c5"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a37fbf38300ea57635af4b60c934e9f46"><td class="memItemLeft" align="right" valign="top">const T & </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a37fbf38300ea57635af4b60c934e9f46">back</a> () const </td></tr> +<tr class="separator:a37fbf38300ea57635af4b60c934e9f46"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae0e6ce694fb95a50c2974c6c2cc0ffc8"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#ae0e6ce694fb95a50c2974c6c2cc0ffc8">reserve</a> (int minCapacity)</td></tr> +<tr class="separator:ae0e6ce694fb95a50c2974c6c2cc0ffc8"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a6c4a1f4acb4d6275c9e1ac01d4e35ab1"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a6c4a1f4acb4d6275c9e1ac01d4e35ab1">resize</a> (int newCount)</td></tr> +<tr class="separator:a6c4a1f4acb4d6275c9e1ac01d4e35ab1"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a36a3fd5e42c5d8005f72bcc43217cf37"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a36a3fd5e42c5d8005f72bcc43217cf37">resize</a> (int newCount, const T &val)</td></tr> +<tr class="separator:a36a3fd5e42c5d8005f72bcc43217cf37"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> +Data Fields</h2></td></tr> +<tr class="memitem:ab08ce71766df91fc9201a61a48054d0c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#ab08ce71766df91fc9201a61a48054d0c">lib</a></td></tr> +<tr class="separator:ab08ce71766df91fc9201a61a48054d0c"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aa408aa5327d07f69fc12314df2d5dcfb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#aa408aa5327d07f69fc12314df2d5dcfb">buffer</a></td></tr> +<tr class="separator:aa408aa5327d07f69fc12314df2d5dcfb"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aa4422fcaa24d5bbd71aa7772639512b9"><td class="memItemLeft" align="right" valign="top">T * </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#aa4422fcaa24d5bbd71aa7772639512b9">mappedPtr</a></td></tr> +<tr class="separator:aa4422fcaa24d5bbd71aa7772639512b9"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad462ae46f0270161c79572762b558124"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#ad462ae46f0270161c79572762b558124">count</a></td></tr> +<tr class="separator:ad462ae46f0270161c79572762b558124"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac28b5fd10fd519265c66cf4a0ce8e6ae"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#ac28b5fd10fd519265c66cf4a0ce8e6ae">capacity</a></td></tr> +<tr class="separator:ac28b5fd10fd519265c66cf4a0ce8e6ae"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<h2 class="groupheader">Constructor & Destructor Documentation</h2> +<a class="anchor" id="a9d7ff86aeebc0fcfa5c125d7872e2e3b"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::<a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a> </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>l</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>size</em> = <code>0</code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a026d8fcd71bb256610401cc861345428"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::<a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a> </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> * </td> + <td class="paramname"><em>l</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const T * </td> + <td class="paramname"><em>ptr</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>size</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="afb9c0f47544c0cdebe21efb6908dd3a0"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::~<a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a> </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +</div> +</div> +<h2 class="groupheader">Member Function Documentation</h2> +<a class="anchor" id="a0309d584abbe900d3af3823a79e89ee7"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::init </td> + <td>(</td> + <td class="paramtype">int </td> + <td class="paramname"><em>size</em></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="ade3c494ee6e75e54a6ba73d6bc100bd9"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::destroy </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a56640fd10b06a4024a4bf01c306c436b"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::map </td> + <td>(</td> + <td class="paramtype">int </td> + <td class="paramname"><em>flags</em> = <code><a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">eNvFlexMapWait</a></code></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="afca9914468beb61f6c98bc052e2af5e0"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::unmap </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a3871fbd5422c9b3f41bd5dc2046e1aa7"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">const T& <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::operator[] </td> + <td>(</td> + <td class="paramtype">int </td> + <td class="paramname"><em>index</em></td><td>)</td> + <td> const</td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a769d5ad0723a3fceac7951967e8b4d03"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">T& <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::operator[] </td> + <td>(</td> + <td class="paramtype">int </td> + <td class="paramname"><em>index</em></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a98584303358b70fd12ead231cd750335"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::push_back </td> + <td>(</td> + <td class="paramtype">const T & </td> + <td class="paramname"><em>t</em></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="acd29b9b2b27e53e3640c24da6959e3cd"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::assign </td> + <td>(</td> + <td class="paramtype">const T * </td> + <td class="paramname"><em>srcPtr</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>newCount</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a225da2c753ca0bb95b570c303f0cd761"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::copyto </td> + <td>(</td> + <td class="paramtype">T * </td> + <td class="paramname"><em>dest</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>count</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a1933b633e9055d9adf8b62c4aa8a3bc0"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">int <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::size </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td> const</td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a73f78b1efc76c96666a96a79064670c5"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">bool <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::empty </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td> const</td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a37fbf38300ea57635af4b60c934e9f46"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">const T& <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::back </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td> const</td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="ae0e6ce694fb95a50c2974c6c2cc0ffc8"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::reserve </td> + <td>(</td> + <td class="paramtype">int </td> + <td class="paramname"><em>minCapacity</em></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a6c4a1f4acb4d6275c9e1ac01d4e35ab1"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::resize </td> + <td>(</td> + <td class="paramtype">int </td> + <td class="paramname"><em>newCount</em></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a36a3fd5e42c5d8005f72bcc43217cf37"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::resize </td> + <td>(</td> + <td class="paramtype">int </td> + <td class="paramname"><em>newCount</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const T & </td> + <td class="paramname"><em>val</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +</div> +</div> +<h2 class="groupheader">Field Documentation</h2> +<a class="anchor" id="ab08ce71766df91fc9201a61a48054d0c"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::lib</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="aa408aa5327d07f69fc12314df2d5dcfb"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::buffer</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="aa4422fcaa24d5bbd71aa7772639512b9"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> + <table class="memname"> + <tr> + <td class="memname">T* <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::mappedPtr</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="ad462ae46f0270161c79572762b558124"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> + <table class="memname"> + <tr> + <td class="memname">int <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::count</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="ac28b5fd10fd519265c66cf4a0ce8e6ae"></a> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> + <table class="memname"> + <tr> + <td class="memname">int <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>< T >::capacity</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Wed Feb 22 2017 12:18:22 for FLEX by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.9.1 +</small></address> +</body> +</html> diff --git a/doc/_static/api/sync_off.png b/doc/_static/api/sync_off.png Binary files differnew file mode 100644 index 0000000..3177824 --- /dev/null +++ b/doc/_static/api/sync_off.png diff --git a/doc/_static/api/sync_on.png b/doc/_static/api/sync_on.png Binary files differnew file mode 100644 index 0000000..8c2c857 --- /dev/null +++ b/doc/_static/api/sync_on.png diff --git a/doc/_static/api/tab_a.png b/doc/_static/api/tab_a.png Binary files differnew file mode 100644 index 0000000..7ab2dd5 --- /dev/null +++ b/doc/_static/api/tab_a.png diff --git a/doc/_static/api/tab_b.png b/doc/_static/api/tab_b.png Binary files differnew file mode 100644 index 0000000..9408294 --- /dev/null +++ b/doc/_static/api/tab_b.png diff --git a/doc/_static/api/tab_h.png b/doc/_static/api/tab_h.png Binary files differnew file mode 100644 index 0000000..75cc5ba --- /dev/null +++ b/doc/_static/api/tab_h.png diff --git a/doc/_static/api/tab_s.png b/doc/_static/api/tab_s.png Binary files differnew file mode 100644 index 0000000..5ad6558 --- /dev/null +++ b/doc/_static/api/tab_s.png diff --git a/doc/_static/api/tabs.css b/doc/_static/api/tabs.css new file mode 100644 index 0000000..1760161 --- /dev/null +++ b/doc/_static/api/tabs.css @@ -0,0 +1,60 @@ +.tabs, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 13px; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; +} + +.tablist li { + float: left; + display: table-cell; + background-image: url('tab_b.png'); + line-height: 36px; + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + background-image:url('tab_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #3E5035; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: url('tab_h.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + text-decoration: none; +} + +.tablist li.current a { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} |