inital commit of the physics singleton

This commit is contained in:
Otto Naderer 2014-03-12 17:51:43 +01:00
parent 2ae9b406ee
commit 4d8d443e2f
72 changed files with 7251 additions and 0 deletions

2354
doc/Doxyfile Normal file

File diff suppressed because it is too large Load Diff

100
doc/html/annotated.html Normal file
View File

@ -0,0 +1,100 @@
<!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.6"/>
<title>irrDynamics: Class 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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.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 style="padding-left: 0.5em;">
<div id="projectname">irrDynamics
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Class List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classirr_dynamics.html" target="_self">irrDynamics</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 Mar 12 2014 13:48:35 for irrDynamics by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

BIN
doc/html/bc_s.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 676 B

BIN
doc/html/bdwn.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

104
doc/html/classes.html Normal file
View File

@ -0,0 +1,104 @@
<!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.6"/>
<title>irrDynamics: Class Index</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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.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 style="padding-left: 0.5em;">
<div id="projectname">irrDynamics
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li class="current"><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Class Index</div> </div>
</div><!--header-->
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_I">I</a></div>
<table style="margin: 10px; white-space: nowrap;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
<tr><td rowspan="2" valign="bottom"><a name="letter_i"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;i&#160;&#160;</div></td></tr></table>
</td><td></td></tr>
<tr><td></td></tr>
<tr><td valign="top"><a class="el" href="classirr_dynamics.html">irrDynamics</a>&#160;&#160;&#160;</td><td></td></tr>
<tr><td></td><td></td></tr>
</table>
<div class="qindex"><a class="qindex" href="#letter_I">I</a></div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Mar 12 2014 13:48:35 for irrDynamics by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -0,0 +1,112 @@
<!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.6"/>
<title>irrDynamics: Member 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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.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 style="padding-left: 0.5em;">
<div id="projectname">irrDynamics
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">irrDynamics Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classirr_dynamics.html">irrDynamics</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classirr_dynamics.html#ae57a380934ec217890202db55c29be60">addBoxObject</a>(irr::scene::ISceneNode *node, irr::f32 mass)</td><td class="entry"><a class="el" href="classirr_dynamics.html">irrDynamics</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classirr_dynamics.html#a7e23a5d4515b38b473fbd538c8d30517">addFloor</a>(const irr::core::vector3df &amp;normal=irr::core::vector3df(0.f, 1.f, 0.f), const irr::core::vector3df &amp;offset=irr::core::vector3df(0.f, 0.f, 0.f))</td><td class="entry"><a class="el" href="classirr_dynamics.html">irrDynamics</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classirr_dynamics.html#a7744a583c48c37deaf629da9b6769bad">addSphericalObject</a>(irr::scene::ISceneNode *node, irr::f32 radius, irr::f32 mass)</td><td class="entry"><a class="el" href="classirr_dynamics.html">irrDynamics</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>addTerrain</b>(irr::scene::ITerrainSceneNode *terrain, irr::u32 lodLevel=2) (defined in <a class="el" href="classirr_dynamics.html">irrDynamics</a>)</td><td class="entry"><a class="el" href="classirr_dynamics.html">irrDynamics</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classirr_dynamics.html#a2b5f4c6732caadddeb3589e321fc9551">applyCentralForce</a>(irr::scene::ISceneNode *node, const irr::core::vector3df &amp;force)</td><td class="entry"><a class="el" href="classirr_dynamics.html">irrDynamics</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classirr_dynamics.html#ae130aee5eb7647617e59c888e5a1acbb">createHingeConstraint</a>(irr::scene::ISceneNode *nodeA, irr::scene::ISceneNode *nodeB, const irr::core::vector3df &amp;pivotInA, const irr::core::vector3df &amp;pivotInB, const irr::core::vector3df &amp;axisInA, const irr::core::vector3df &amp;axisInB)</td><td class="entry"><a class="el" href="classirr_dynamics.html">irrDynamics</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classirr_dynamics.html#a1b0ce9bd5b1057857b5d99495e9cab41">createPoint2PointConstraint</a>(irr::scene::ISceneNode *nodeA, irr::scene::ISceneNode *nodeB, const irr::core::vector3df &amp;pivotInA, const irr::core::vector3df &amp;pivotInB)</td><td class="entry"><a class="el" href="classirr_dynamics.html">irrDynamics</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>debugDraw</b>() (defined in <a class="el" href="classirr_dynamics.html">irrDynamics</a>)</td><td class="entry"><a class="el" href="classirr_dynamics.html">irrDynamics</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getInstance</b>() (defined in <a class="el" href="classirr_dynamics.html">irrDynamics</a>)</td><td class="entry"><a class="el" href="classirr_dynamics.html">irrDynamics</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classirr_dynamics.html#a9373fe3504096f6f6c17eca2be9bb459">removeObject</a>(irr::scene::ISceneNode *node)</td><td class="entry"><a class="el" href="classirr_dynamics.html">irrDynamics</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setDamping</b>(irr::scene::ISceneNode *node, irr::f32 linearDamping, irr::f32 angularDamping) (defined in <a class="el" href="classirr_dynamics.html">irrDynamics</a>)</td><td class="entry"><a class="el" href="classirr_dynamics.html">irrDynamics</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>setPosition</b>(irr::scene::ISceneNode *node, const irr::core::vector3df &amp;newPos) (defined in <a class="el" href="classirr_dynamics.html">irrDynamics</a>)</td><td class="entry"><a class="el" href="classirr_dynamics.html">irrDynamics</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>shutdown</b>() (defined in <a class="el" href="classirr_dynamics.html">irrDynamics</a>)</td><td class="entry"><a class="el" href="classirr_dynamics.html">irrDynamics</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>simStep</b>(const irr::u32 &amp;curTimeStamp) (defined in <a class="el" href="classirr_dynamics.html">irrDynamics</a>)</td><td class="entry"><a class="el" href="classirr_dynamics.html">irrDynamics</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Mar 12 2014 13:48:35 for irrDynamics by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -0,0 +1,501 @@
<!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.6"/>
<title>irrDynamics: irrDynamics Class 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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.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 style="padding-left: 0.5em;">
<div id="projectname">irrDynamics
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classirr_dynamics-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">irrDynamics Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a91c08601f94a477c54b06e9e1447cacc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a91c08601f94a477c54b06e9e1447cacc"></a>
static <a class="el" href="classirr_dynamics.html">irrDynamics</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>getInstance</b> ()</td></tr>
<tr class="separator:a91c08601f94a477c54b06e9e1447cacc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ef5052cb94a12e98579c7c296131ba7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1ef5052cb94a12e98579c7c296131ba7"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>simStep</b> (const irr::u32 &amp;curTimeStamp)</td></tr>
<tr class="separator:a1ef5052cb94a12e98579c7c296131ba7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7195d45792d0d8b3f77d99c37c407fa3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7195d45792d0d8b3f77d99c37c407fa3"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>shutdown</b> ()</td></tr>
<tr class="separator:a7195d45792d0d8b3f77d99c37c407fa3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa48e00d29759bcbb8300bbb5a1e47512"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa48e00d29759bcbb8300bbb5a1e47512"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>addTerrain</b> (irr::scene::ITerrainSceneNode *terrain, irr::u32 lodLevel=2)</td></tr>
<tr class="separator:aa48e00d29759bcbb8300bbb5a1e47512"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7744a583c48c37deaf629da9b6769bad"><td class="memItemLeft" align="right" valign="top">static class btRigidBody *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classirr_dynamics.html#a7744a583c48c37deaf629da9b6769bad">addSphericalObject</a> (irr::scene::ISceneNode *node, irr::f32 radius, irr::f32 mass)</td></tr>
<tr class="memdesc:a7744a583c48c37deaf629da9b6769bad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a scene node that is represented as spherical behavior. <a href="#a7744a583c48c37deaf629da9b6769bad">More...</a><br/></td></tr>
<tr class="separator:a7744a583c48c37deaf629da9b6769bad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae57a380934ec217890202db55c29be60"><td class="memItemLeft" align="right" valign="top">static class btRigidBody *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classirr_dynamics.html#ae57a380934ec217890202db55c29be60">addBoxObject</a> (irr::scene::ISceneNode *node, irr::f32 mass)</td></tr>
<tr class="memdesc:ae57a380934ec217890202db55c29be60"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a scene node that is represented as a sturdy box. <a href="#ae57a380934ec217890202db55c29be60">More...</a><br/></td></tr>
<tr class="separator:ae57a380934ec217890202db55c29be60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e23a5d4515b38b473fbd538c8d30517"><td class="memItemLeft" align="right" valign="top">static class btRigidBody *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classirr_dynamics.html#a7e23a5d4515b38b473fbd538c8d30517">addFloor</a> (const irr::core::vector3df &amp;normal=irr::core::vector3df(0.f, 1.f, 0.f), const irr::core::vector3df &amp;offset=irr::core::vector3df(0.f, 0.f, 0.f))</td></tr>
<tr class="memdesc:a7e23a5d4515b38b473fbd538c8d30517"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add an infinite floor plane to the scene. <a href="#a7e23a5d4515b38b473fbd538c8d30517">More...</a><br/></td></tr>
<tr class="separator:a7e23a5d4515b38b473fbd538c8d30517"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae130aee5eb7647617e59c888e5a1acbb"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classirr_dynamics.html#ae130aee5eb7647617e59c888e5a1acbb">createHingeConstraint</a> (irr::scene::ISceneNode *nodeA, irr::scene::ISceneNode *nodeB, const irr::core::vector3df &amp;pivotInA, const irr::core::vector3df &amp;pivotInB, const irr::core::vector3df &amp;axisInA, const irr::core::vector3df &amp;axisInB)</td></tr>
<tr class="memdesc:ae130aee5eb7647617e59c888e5a1acbb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a hinge relation between two objects. <a href="#ae130aee5eb7647617e59c888e5a1acbb">More...</a><br/></td></tr>
<tr class="separator:ae130aee5eb7647617e59c888e5a1acbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b0ce9bd5b1057857b5d99495e9cab41"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classirr_dynamics.html#a1b0ce9bd5b1057857b5d99495e9cab41">createPoint2PointConstraint</a> (irr::scene::ISceneNode *nodeA, irr::scene::ISceneNode *nodeB, const irr::core::vector3df &amp;pivotInA, const irr::core::vector3df &amp;pivotInB)</td></tr>
<tr class="memdesc:a1b0ce9bd5b1057857b5d99495e9cab41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a point-to-point relation between two objects. <a href="#a1b0ce9bd5b1057857b5d99495e9cab41">More...</a><br/></td></tr>
<tr class="separator:a1b0ce9bd5b1057857b5d99495e9cab41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9373fe3504096f6f6c17eca2be9bb459"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classirr_dynamics.html#a9373fe3504096f6f6c17eca2be9bb459">removeObject</a> (irr::scene::ISceneNode *node)</td></tr>
<tr class="memdesc:a9373fe3504096f6f6c17eca2be9bb459"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove an object from the physics. <a href="#a9373fe3504096f6f6c17eca2be9bb459">More...</a><br/></td></tr>
<tr class="separator:a9373fe3504096f6f6c17eca2be9bb459"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b5f4c6732caadddeb3589e321fc9551"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classirr_dynamics.html#a2b5f4c6732caadddeb3589e321fc9551">applyCentralForce</a> (irr::scene::ISceneNode *node, const irr::core::vector3df &amp;force)</td></tr>
<tr class="memdesc:a2b5f4c6732caadddeb3589e321fc9551"><td class="mdescLeft">&#160;</td><td class="mdescRight">Applies a pushing force to the object. <a href="#a2b5f4c6732caadddeb3589e321fc9551">More...</a><br/></td></tr>
<tr class="separator:a2b5f4c6732caadddeb3589e321fc9551"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a065d0b0ac1ba5b475587b20d837a1ceb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a065d0b0ac1ba5b475587b20d837a1ceb"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>setDamping</b> (irr::scene::ISceneNode *node, irr::f32 linearDamping, irr::f32 angularDamping)</td></tr>
<tr class="separator:a065d0b0ac1ba5b475587b20d837a1ceb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b65dad3b5bd0541880011bf5c8ee940"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2b65dad3b5bd0541880011bf5c8ee940"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>setPosition</b> (irr::scene::ISceneNode *node, const irr::core::vector3df &amp;newPos)</td></tr>
<tr class="separator:a2b65dad3b5bd0541880011bf5c8ee940"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abaea07b3d0edf22827bfd104808fa66d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abaea07b3d0edf22827bfd104808fa66d"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>debugDraw</b> ()</td></tr>
<tr class="separator:abaea07b3d0edf22827bfd104808fa66d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="ae57a380934ec217890202db55c29be60"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static class btRigidBody* irrDynamics::addBoxObject </td>
<td>(</td>
<td class="paramtype">irr::scene::ISceneNode *&#160;</td>
<td class="paramname"><em>node</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">irr::f32&#160;</td>
<td class="paramname"><em>mass</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Add a scene node that is represented as a sturdy box. </p>
<p>This method adds an object with block-like behavior to the physics, such as a CubeSceneNode. Its dimensions are calculated using the current axis-aligned bounding box. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">node</td><td>The scene node to be animated by Bullet. </td></tr>
<tr><td class="paramname">mass</td><td>The mass in units assigned to the object. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The corresponding btRigidBody, if addidional parameters are desired to be set. </dd></dl>
</div>
</div>
<a class="anchor" id="a7e23a5d4515b38b473fbd538c8d30517"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static class btRigidBody* irrDynamics::addFloor </td>
<td>(</td>
<td class="paramtype">const irr::core::vector3df &amp;&#160;</td>
<td class="paramname"><em>normal</em> = <code>irr::core::vector3df(0.f,&#160;1.f,&#160;0.f)</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const irr::core::vector3df &amp;&#160;</td>
<td class="paramname"><em>offset</em> = <code>irr::core::vector3df(0.f,&#160;0.f,&#160;0.f)</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Add an infinite floor plane to the scene. </p>
<p>Whenever an infinite floor catching all your objects is needed, use this method </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">normal</td><td>The normal vector of the floor plane. Default lays the plane along x- and z-axis (y up). </td></tr>
<tr><td class="paramname">offset</td><td>The offset from the origin. If normal is default, only the y-value matters here (vert offset). </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The corresponding btRigidBody, if addidional parameters are desired to be set. </dd></dl>
</div>
</div>
<a class="anchor" id="a7744a583c48c37deaf629da9b6769bad"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static class btRigidBody* irrDynamics::addSphericalObject </td>
<td>(</td>
<td class="paramtype">irr::scene::ISceneNode *&#160;</td>
<td class="paramname"><em>node</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">irr::f32&#160;</td>
<td class="paramname"><em>radius</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">irr::f32&#160;</td>
<td class="paramname"><em>mass</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Add a scene node that is represented as spherical behavior. </p>
<p>This method adds an object with ball-like behavior to the physics, such as a SphereSceneNode. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">node</td><td>The scene node to be animated by Bullet. </td></tr>
<tr><td class="paramname">radius</td><td>The radius of the sphere in irrlicht units. </td></tr>
<tr><td class="paramname">mass</td><td>The mass in units assigned to the object. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The corresponding btRigidBody, if addidional parameters are desired to be set. </dd></dl>
</div>
</div>
<a class="anchor" id="a2b5f4c6732caadddeb3589e321fc9551"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void irrDynamics::applyCentralForce </td>
<td>(</td>
<td class="paramtype">irr::scene::ISceneNode *&#160;</td>
<td class="paramname"><em>node</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const irr::core::vector3df &amp;&#160;</td>
<td class="paramname"><em>force</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Applies a pushing force to the object. </p>
<p>To move an object in a physics engine you do not set its position but you push it towards that place. Use this method to apply such a push represented as a 3D vector. As expected, the 'longer' the vector, the more powerful the push will be. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">node</td><td>The scene node the force should be applied to. </td></tr>
<tr><td class="paramname">force</td><td>The force to apply, the vector represents its direction, the vector length its power. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ae130aee5eb7647617e59c888e5a1acbb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static bool irrDynamics::createHingeConstraint </td>
<td>(</td>
<td class="paramtype">irr::scene::ISceneNode *&#160;</td>
<td class="paramname"><em>nodeA</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">irr::scene::ISceneNode *&#160;</td>
<td class="paramname"><em>nodeB</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const irr::core::vector3df &amp;&#160;</td>
<td class="paramname"><em>pivotInA</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const irr::core::vector3df &amp;&#160;</td>
<td class="paramname"><em>pivotInB</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const irr::core::vector3df &amp;&#160;</td>
<td class="paramname"><em>axisInA</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const irr::core::vector3df &amp;&#160;</td>
<td class="paramname"><em>axisInB</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a hinge relation between two objects. </p>
<p>This method physically attaches one scene node to the other in a hinge-like (swinging) relation. </p>
<dl class="section note"><dt>Note</dt><dd>Both scene nodes have to be already added to the sim. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">nodeA</td><td>The "parent" node the swinging one is attached to. </td></tr>
<tr><td class="paramname">nodeB</td><td>The child element that will be animated by that relation. </td></tr>
<tr><td class="paramname">pivotInA</td><td>A position relative to nodeA where the hinge relation will be placed. </td></tr>
<tr><td class="paramname">pivotInB</td><td>A position relative to nodeB where the hinge relation will be placed. </td></tr>
<tr><td class="paramname">axisInA</td><td>The axis in nodeA the hinge rotates around. </td></tr>
<tr><td class="paramname">axisInB</td><td>The axis in nodeB the hinge rotates around. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True, when both nodes were found in the physics representation and the relation was created. </dd></dl>
</div>
</div>
<a class="anchor" id="a1b0ce9bd5b1057857b5d99495e9cab41"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static bool irrDynamics::createPoint2PointConstraint </td>
<td>(</td>
<td class="paramtype">irr::scene::ISceneNode *&#160;</td>
<td class="paramname"><em>nodeA</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">irr::scene::ISceneNode *&#160;</td>
<td class="paramname"><em>nodeB</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const irr::core::vector3df &amp;&#160;</td>
<td class="paramname"><em>pivotInA</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const irr::core::vector3df &amp;&#160;</td>
<td class="paramname"><em>pivotInB</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a point-to-point relation between two objects. </p>
<p>More general than a hinge relation, the p2p can freely swing around all axis. </p>
<dl class="section note"><dt>Note</dt><dd>Both scene nodes have to be already added to the sim. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">nodeA</td><td>The "parent" node the swinging one is attached to. </td></tr>
<tr><td class="paramname">nodeB</td><td>The child element that will be animated by that relation. </td></tr>
<tr><td class="paramname">pivotInA</td><td>A position relative to nodeA where the hinge relation will be placed. </td></tr>
<tr><td class="paramname">pivotInB</td><td>A position relative to nodeB where the hinge relation will be placed. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True, when both nodes were found in the physics representation and the relation was created. </dd></dl>
</div>
</div>
<a class="anchor" id="a9373fe3504096f6f6c17eca2be9bb459"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void irrDynamics::removeObject </td>
<td>(</td>
<td class="paramtype">irr::scene::ISceneNode *&#160;</td>
<td class="paramname"><em>node</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove an object from the physics. </p>
<p>Call this whenever you either remove the corresponding scene node from the ISceneManager or you don't want to have it animated by the physics anymore. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">node</td><td>The scene node to be removed from the physics. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>/home/ottona/Projekte/irrdynamics/include/<a class="el" href="irr_dynamics_8h_source.html">irrDynamics.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Mar 12 2014 13:48:35 for irrDynamics by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

BIN
doc/html/closed.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

View File

@ -0,0 +1,98 @@
<!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.6"/>
<title>irrDynamics: /home/ottona/Projekte/irrdynamics/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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.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 style="padding-left: 0.5em;">
<div id="projectname">irrDynamics
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<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:irr_dynamics_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>irrDynamics.h</b> <a href="irr_dynamics_8h_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Mar 12 2014 13:48:35 for irrDynamics by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

1366
doc/html/doxygen.css Normal file

File diff suppressed because it is too large Load Diff

BIN
doc/html/doxygen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

97
doc/html/dynsections.js Normal file
View File

@ -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.attr('src','ftv2folderopen.png');
a.attr('src','ftv2mnode.png');
$(this).show();
} else if (l==level+1) {
i.attr('src','ftv2folderclosed.png');
a.attr('src','ftv2pnode.png');
$(this).show();
} else {
$(this).hide();
}
});
updateStripes();
}
function toggleFolder(id)
{
//The clicked row
var currentRow = $('#row_'+id);
var currentRowImages = currentRow.find("img");
//All rows after the clicked row
var rows = currentRow.nextAll("tr");
//Only match elements AFTER this one (can't hide elements before)
var childRows = rows.filter(function() {
var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
return this.id.match(re);
});
//First row is visible we are HIDING
if (childRows.filter(':first').is(':visible')===true) {
currentRowImages.filter("[id^=arr]").attr('src', 'ftv2pnode.png');
currentRowImages.filter("[id^=img]").attr('src', 'ftv2folderclosed.png');
rows.filter("[id^=row_"+id+"]").hide();
} else { //We are SHOWING
//All sub images
var childImages = childRows.find("img");
var childImg = childImages.filter("[id^=img]");
var childArr = childImages.filter("[id^=arr]");
currentRow.find("[id^=arr]").attr('src', 'ftv2mnode.png'); //open row
currentRow.find("[id^=img]").attr('src', 'ftv2folderopen.png'); //open row
childImg.attr('src','ftv2folderclosed.png'); //children closed
childArr.attr('src','ftv2pnode.png'); //children closed
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');
}
}

99
doc/html/files.html Normal file
View File

@ -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.6"/>
<title>irrDynamics: 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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.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 style="padding-left: 0.5em;">
<div id="projectname">irrDynamics
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<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 documented files with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><img id="arr_0_" src="ftv2mlastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('0_')"/><img id="img_0_" src="ftv2folderopen.png" alt="-" width="24" height="22" onclick="toggleFolder('0_')"/><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html" target="_self">include</a></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="irr_dynamics_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>irrDynamics.h</b></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Mar 12 2014 13:48:35 for irrDynamics by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

BIN
doc/html/ftv2blank.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

BIN
doc/html/ftv2cl.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

BIN
doc/html/ftv2doc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

BIN
doc/html/ftv2folderopen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

BIN
doc/html/ftv2lastnode.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

BIN
doc/html/ftv2link.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

BIN
doc/html/ftv2mlastnode.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

BIN
doc/html/ftv2mnode.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

BIN
doc/html/ftv2mo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 B

BIN
doc/html/ftv2node.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

BIN
doc/html/ftv2ns.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

BIN
doc/html/ftv2plastnode.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

BIN
doc/html/ftv2pnode.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

BIN
doc/html/ftv2splitbar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

BIN
doc/html/ftv2vertline.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

120
doc/html/functions.html Normal file
View File

@ -0,0 +1,120 @@
<!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.6"/>
<title>irrDynamics: Class Members</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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.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 style="padding-left: 0.5em;">
<div id="projectname">irrDynamics
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li class="current"><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="functions.html"><span>All</span></a></li>
<li><a href="functions_func.html"><span>Functions</span></a></li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
<div class="textblock">Here is a list of all documented class members with links to the class documentation for each member:</div><ul>
<li>addBoxObject()
: <a class="el" href="classirr_dynamics.html#ae57a380934ec217890202db55c29be60">irrDynamics</a>
</li>
<li>addFloor()
: <a class="el" href="classirr_dynamics.html#a7e23a5d4515b38b473fbd538c8d30517">irrDynamics</a>
</li>
<li>addSphericalObject()
: <a class="el" href="classirr_dynamics.html#a7744a583c48c37deaf629da9b6769bad">irrDynamics</a>
</li>
<li>applyCentralForce()
: <a class="el" href="classirr_dynamics.html#a2b5f4c6732caadddeb3589e321fc9551">irrDynamics</a>
</li>
<li>createHingeConstraint()
: <a class="el" href="classirr_dynamics.html#ae130aee5eb7647617e59c888e5a1acbb">irrDynamics</a>
</li>
<li>createPoint2PointConstraint()
: <a class="el" href="classirr_dynamics.html#a1b0ce9bd5b1057857b5d99495e9cab41">irrDynamics</a>
</li>
<li>removeObject()
: <a class="el" href="classirr_dynamics.html#a9373fe3504096f6f6c17eca2be9bb459">irrDynamics</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Mar 12 2014 13:48:35 for irrDynamics by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -0,0 +1,120 @@
<!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.6"/>
<title>irrDynamics: Class Members - Functions</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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.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 style="padding-left: 0.5em;">
<div id="projectname">irrDynamics
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li class="current"><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="functions.html"><span>All</span></a></li>
<li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>addBoxObject()
: <a class="el" href="classirr_dynamics.html#ae57a380934ec217890202db55c29be60">irrDynamics</a>
</li>
<li>addFloor()
: <a class="el" href="classirr_dynamics.html#a7e23a5d4515b38b473fbd538c8d30517">irrDynamics</a>
</li>
<li>addSphericalObject()
: <a class="el" href="classirr_dynamics.html#a7744a583c48c37deaf629da9b6769bad">irrDynamics</a>
</li>
<li>applyCentralForce()
: <a class="el" href="classirr_dynamics.html#a2b5f4c6732caadddeb3589e321fc9551">irrDynamics</a>
</li>
<li>createHingeConstraint()
: <a class="el" href="classirr_dynamics.html#ae130aee5eb7647617e59c888e5a1acbb">irrDynamics</a>
</li>
<li>createPoint2PointConstraint()
: <a class="el" href="classirr_dynamics.html#a1b0ce9bd5b1057857b5d99495e9cab41">irrDynamics</a>
</li>
<li>removeObject()
: <a class="el" href="classirr_dynamics.html#a9373fe3504096f6f6c17eca2be9bb459">irrDynamics</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Mar 12 2014 13:48:35 for irrDynamics by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

88
doc/html/index.html Normal file
View File

@ -0,0 +1,88 @@
<!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.6"/>
<title>irrDynamics: 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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.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 style="padding-left: 0.5em;">
<div id="projectname">irrDynamics
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">irrDynamics Documentation</div> </div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Mar 12 2014 13:48:35 for irrDynamics by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -0,0 +1,155 @@
<!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.6"/>
<title>irrDynamics: /home/ottona/Projekte/irrdynamics/include/irrDynamics.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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.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 style="padding-left: 0.5em;">
<div id="projectname">irrDynamics
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<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">irrDynamics.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#include &lt;irrlicht.h&gt;</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"><a class="line" href="classirr_dynamics.html"> 4</a></span>&#160;<span class="keyword">class </span><a class="code" href="classirr_dynamics.html">irrDynamics</a></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;{</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160; <span class="keyword">static</span> <a class="code" href="classirr_dynamics.html">irrDynamics</a>* getInstance();</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> simStep(<span class="keyword">const</span> irr::u32&amp; curTimeStamp);</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> shutdown();</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> addTerrain(irr::scene::ITerrainSceneNode* terrain, irr::u32 lodLevel = 2);</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">static</span> <span class="keyword">class </span>btRigidBody* <a class="code" href="classirr_dynamics.html#a7744a583c48c37deaf629da9b6769bad">addSphericalObject</a>(irr::scene::ISceneNode* node, irr::f32 radius, irr::f32 mass);</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">static</span> <span class="keyword">class </span>btRigidBody* <a class="code" href="classirr_dynamics.html#ae57a380934ec217890202db55c29be60">addBoxObject</a>(irr::scene::ISceneNode* node, irr::f32 mass);</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">static</span> <span class="keyword">class </span>btRigidBody* <a class="code" href="classirr_dynamics.html#a7e23a5d4515b38b473fbd538c8d30517">addFloor</a>(<span class="keyword">const</span> irr::core::vector3df&amp; normal = irr::core::vector3df(0.f, 1.f, 0.f), <span class="keyword">const</span> irr::core::vector3df&amp; offset = irr::core::vector3df(0.f, 0.f, 0.f));</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classirr_dynamics.html#ae130aee5eb7647617e59c888e5a1acbb">createHingeConstraint</a>(irr::scene::ISceneNode* nodeA, irr::scene::ISceneNode* nodeB, <span class="keyword">const</span> irr::core::vector3df&amp; pivotInA, <span class="keyword">const</span> irr::core::vector3df&amp; pivotInB, <span class="keyword">const</span> irr::core::vector3df&amp; axisInA, <span class="keyword">const</span> irr::core::vector3df&amp; axisInB);</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classirr_dynamics.html#a1b0ce9bd5b1057857b5d99495e9cab41">createPoint2PointConstraint</a>(irr::scene::ISceneNode* nodeA, irr::scene::ISceneNode* nodeB, <span class="keyword">const</span> irr::core::vector3df&amp; pivotInA, <span class="keyword">const</span> irr::core::vector3df&amp; pivotInB);</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classirr_dynamics.html#a9373fe3504096f6f6c17eca2be9bb459">removeObject</a>(irr::scene::ISceneNode* node);</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classirr_dynamics.html#a2b5f4c6732caadddeb3589e321fc9551">applyCentralForce</a>(irr::scene::ISceneNode* node, <span class="keyword">const</span> irr::core::vector3df&amp; force);</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> setDamping(irr::scene::ISceneNode* node, irr::f32 linearDamping, irr::f32 angularDamping);</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> setPosition(irr::scene::ISceneNode* node, <span class="keyword">const</span> irr::core::vector3df&amp; newPos);</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment">// static IRigidBody* createRigidBodyByBB(scene::ISceneNode* node, f32 mass);</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> debugDraw();</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="classirr_dynamics.html">irrDynamics</a>();</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="classirr_dynamics.html">irrDynamics</a>(<span class="keyword">const</span> <a class="code" href="classirr_dynamics.html">irrDynamics</a>&amp; other);</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; std::map&lt;irr::scene::ISceneNode*, class btRigidBody*&gt; objects;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordtype">void</span> updateObjects();</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; ~<a class="code" href="classirr_dynamics.html">irrDynamics</a>();</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">static</span> <a class="code" href="classirr_dynamics.html">irrDynamics</a>* instance;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">void</span> clearObjects();</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment">//bt-related stuff</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">class </span>btDefaultCollisionConfiguration *collisionConfiguration;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">class </span>btBroadphaseInterface *broadPhase;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">class </span>btCollisionDispatcher *dispatcher;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">class </span>btSequentialImpulseConstraintSolver *solver;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">class </span>btDiscreteDynamicsWorld* world;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment">// irrBulletWorld* bWorld;</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; irr::u32 lastStep;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;};</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div>
<div class="ttc" id="classirr_dynamics_html_a7e23a5d4515b38b473fbd538c8d30517"><div class="ttname"><a href="classirr_dynamics.html#a7e23a5d4515b38b473fbd538c8d30517">irrDynamics::addFloor</a></div><div class="ttdeci">static class btRigidBody * addFloor(const irr::core::vector3df &amp;normal=irr::core::vector3df(0.f, 1.f, 0.f), const irr::core::vector3df &amp;offset=irr::core::vector3df(0.f, 0.f, 0.f))</div><div class="ttdoc">Add an infinite floor plane to the scene. </div></div>
<div class="ttc" id="classirr_dynamics_html"><div class="ttname"><a href="classirr_dynamics.html">irrDynamics</a></div><div class="ttdef"><b>Definition:</b> irrDynamics.h:4</div></div>
<div class="ttc" id="classirr_dynamics_html_a7744a583c48c37deaf629da9b6769bad"><div class="ttname"><a href="classirr_dynamics.html#a7744a583c48c37deaf629da9b6769bad">irrDynamics::addSphericalObject</a></div><div class="ttdeci">static class btRigidBody * addSphericalObject(irr::scene::ISceneNode *node, irr::f32 radius, irr::f32 mass)</div><div class="ttdoc">Add a scene node that is represented as spherical behavior. </div></div>
<div class="ttc" id="classirr_dynamics_html_a9373fe3504096f6f6c17eca2be9bb459"><div class="ttname"><a href="classirr_dynamics.html#a9373fe3504096f6f6c17eca2be9bb459">irrDynamics::removeObject</a></div><div class="ttdeci">static void removeObject(irr::scene::ISceneNode *node)</div><div class="ttdoc">Remove an object from the physics. </div></div>
<div class="ttc" id="classirr_dynamics_html_a1b0ce9bd5b1057857b5d99495e9cab41"><div class="ttname"><a href="classirr_dynamics.html#a1b0ce9bd5b1057857b5d99495e9cab41">irrDynamics::createPoint2PointConstraint</a></div><div class="ttdeci">static bool createPoint2PointConstraint(irr::scene::ISceneNode *nodeA, irr::scene::ISceneNode *nodeB, const irr::core::vector3df &amp;pivotInA, const irr::core::vector3df &amp;pivotInB)</div><div class="ttdoc">Create a point-to-point relation between two objects. </div></div>
<div class="ttc" id="classirr_dynamics_html_ae130aee5eb7647617e59c888e5a1acbb"><div class="ttname"><a href="classirr_dynamics.html#ae130aee5eb7647617e59c888e5a1acbb">irrDynamics::createHingeConstraint</a></div><div class="ttdeci">static bool createHingeConstraint(irr::scene::ISceneNode *nodeA, irr::scene::ISceneNode *nodeB, const irr::core::vector3df &amp;pivotInA, const irr::core::vector3df &amp;pivotInB, const irr::core::vector3df &amp;axisInA, const irr::core::vector3df &amp;axisInB)</div><div class="ttdoc">Create a hinge relation between two objects. </div></div>
<div class="ttc" id="classirr_dynamics_html_ae57a380934ec217890202db55c29be60"><div class="ttname"><a href="classirr_dynamics.html#ae57a380934ec217890202db55c29be60">irrDynamics::addBoxObject</a></div><div class="ttdeci">static class btRigidBody * addBoxObject(irr::scene::ISceneNode *node, irr::f32 mass)</div><div class="ttdoc">Add a scene node that is represented as a sturdy box. </div></div>
<div class="ttc" id="classirr_dynamics_html_a2b5f4c6732caadddeb3589e321fc9551"><div class="ttname"><a href="classirr_dynamics.html#a2b5f4c6732caadddeb3589e321fc9551">irrDynamics::applyCentralForce</a></div><div class="ttdeci">static void applyCentralForce(irr::scene::ISceneNode *node, const irr::core::vector3df &amp;force)</div><div class="ttdoc">Applies a pushing force to the object. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Mar 12 2014 13:48:35 for irrDynamics by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

31
doc/html/jquery.js vendored Normal file

File diff suppressed because one or more lines are too long

BIN
doc/html/nav_f.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 B

BIN
doc/html/nav_g.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 B

BIN
doc/html/nav_h.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 B

BIN
doc/html/open.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

View File

@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.6">
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_0.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

7
doc/html/search/all_0.js Normal file
View File

@ -0,0 +1,7 @@
var searchData=
[
['addboxobject',['addBoxObject',['../classirr_dynamics.html#ae57a380934ec217890202db55c29be60',1,'irrDynamics']]],
['addfloor',['addFloor',['../classirr_dynamics.html#a7e23a5d4515b38b473fbd538c8d30517',1,'irrDynamics']]],
['addsphericalobject',['addSphericalObject',['../classirr_dynamics.html#a7744a583c48c37deaf629da9b6769bad',1,'irrDynamics']]],
['applycentralforce',['applyCentralForce',['../classirr_dynamics.html#a2b5f4c6732caadddeb3589e321fc9551',1,'irrDynamics']]]
];

View File

@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.6">
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_1.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

5
doc/html/search/all_1.js Normal file
View File

@ -0,0 +1,5 @@
var searchData=
[
['createhingeconstraint',['createHingeConstraint',['../classirr_dynamics.html#ae130aee5eb7647617e59c888e5a1acbb',1,'irrDynamics']]],
['createpoint2pointconstraint',['createPoint2PointConstraint',['../classirr_dynamics.html#a1b0ce9bd5b1057857b5d99495e9cab41',1,'irrDynamics']]]
];

View File

@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.6">
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_2.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

4
doc/html/search/all_2.js Normal file
View File

@ -0,0 +1,4 @@
var searchData=
[
['irrdynamics',['irrDynamics',['../classirr_dynamics.html',1,'']]]
];

View File

@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.6">
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_3.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

4
doc/html/search/all_3.js Normal file
View File

@ -0,0 +1,4 @@
var searchData=
[
['removeobject',['removeObject',['../classirr_dynamics.html#a9373fe3504096f6f6c17eca2be9bb459',1,'irrDynamics']]]
];

View File

@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.6">
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_0.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

View File

@ -0,0 +1,4 @@
var searchData=
[
['irrdynamics',['irrDynamics',['../classirr_dynamics.html',1,'']]]
];

BIN
doc/html/search/close.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

View File

@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.6">
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_0.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

View File

@ -0,0 +1,7 @@
var searchData=
[
['addboxobject',['addBoxObject',['../classirr_dynamics.html#ae57a380934ec217890202db55c29be60',1,'irrDynamics']]],
['addfloor',['addFloor',['../classirr_dynamics.html#a7e23a5d4515b38b473fbd538c8d30517',1,'irrDynamics']]],
['addsphericalobject',['addSphericalObject',['../classirr_dynamics.html#a7744a583c48c37deaf629da9b6769bad',1,'irrDynamics']]],
['applycentralforce',['applyCentralForce',['../classirr_dynamics.html#a2b5f4c6732caadddeb3589e321fc9551',1,'irrDynamics']]]
];

View File

@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.6">
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_1.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

View File

@ -0,0 +1,5 @@
var searchData=
[
['createhingeconstraint',['createHingeConstraint',['../classirr_dynamics.html#ae130aee5eb7647617e59c888e5a1acbb',1,'irrDynamics']]],
['createpoint2pointconstraint',['createPoint2PointConstraint',['../classirr_dynamics.html#a1b0ce9bd5b1057857b5d99495e9cab41',1,'irrDynamics']]]
];

View File

@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.6">
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_2.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

View File

@ -0,0 +1,4 @@
var searchData=
[
['removeobject',['removeObject',['../classirr_dynamics.html#a9373fe3504096f6f6c17eca2be9bb459',1,'irrDynamics']]]
];

BIN
doc/html/search/mag_sel.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 563 B

View File

@ -0,0 +1,12 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</body>
</html>

271
doc/html/search/search.css Normal file
View File

@ -0,0 +1,271 @@
/*---------------- Search Box */
#FSearchBox {
float: left;
}
#MSearchBox {
white-space : nowrap;
position: absolute;
float: none;
display: inline;
margin-top: 8px;
right: 0px;
width: 170px;
z-index: 102;
background-color: white;
}
#MSearchBox .left
{
display:block;
position:absolute;
left:10px;
width:20px;
height:19px;
background:url('search_l.png') no-repeat;
background-position:right;
}
#MSearchSelect {
display:block;
position:absolute;
width:20px;
height:19px;
}
.left #MSearchSelect {
left:4px;
}
.right #MSearchSelect {
right:5px;
}
#MSearchField {
display:block;
position:absolute;
height:19px;
background:url('search_m.png') repeat-x;
border:none;
width:111px;
margin-left:20px;
padding-left:4px;
color: #909090;
outline: none;
font: 9pt Arial, Verdana, sans-serif;
}
#FSearchBox #MSearchField {
margin-left:15px;
}
#MSearchBox .right {
display:block;
position:absolute;
right:10px;
top:0px;
width:20px;
height:19px;
background:url('search_r.png') no-repeat;
background-position:left;
}
#MSearchClose {
display: none;
position: absolute;
top: 4px;
background : none;
border: none;
margin: 0px 4px 0px 0px;
padding: 0px 0px;
outline: none;
}
.left #MSearchClose {
left: 6px;
}
.right #MSearchClose {
right: 2px;
}
.MSearchBoxActive #MSearchField {
color: #000000;
}
/*---------------- Search filter selection */
#MSearchSelectWindow {
display: none;
position: absolute;
left: 0; top: 0;
border: 1px solid #90A5CE;
background-color: #F9FAFC;
z-index: 1;
padding-top: 4px;
padding-bottom: 4px;
-moz-border-radius: 4px;
-webkit-border-top-left-radius: 4px;
-webkit-border-top-right-radius: 4px;
-webkit-border-bottom-left-radius: 4px;
-webkit-border-bottom-right-radius: 4px;
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
}
.SelectItem {
font: 8pt Arial, Verdana, sans-serif;
padding-left: 2px;
padding-right: 12px;
border: 0px;
}
span.SelectionMark {
margin-right: 4px;
font-family: monospace;
outline-style: none;
text-decoration: none;
}
a.SelectItem {
display: block;
outline-style: none;
color: #000000;
text-decoration: none;
padding-left: 6px;
padding-right: 12px;
}
a.SelectItem:focus,
a.SelectItem:active {
color: #000000;
outline-style: none;
text-decoration: none;
}
a.SelectItem:hover {
color: #FFFFFF;
background-color: #3D578C;
outline-style: none;
text-decoration: none;
cursor: pointer;
display: block;
}
/*---------------- Search results window */
iframe#MSearchResults {
width: 60ex;
height: 15em;
}
#MSearchResultsWindow {
display: none;
position: absolute;
left: 0; top: 0;
border: 1px solid #000;
background-color: #EEF1F7;
}
/* ----------------------------------- */
#SRIndex {
clear:both;
padding-bottom: 15px;
}
.SREntry {
font-size: 10pt;
padding-left: 1ex;
}
.SRPage .SREntry {
font-size: 8pt;
padding: 1px 5px;
}
body.SRPage {
margin: 5px 2px;
}
.SRChildren {
padding-left: 3ex; padding-bottom: .5em
}
.SRPage .SRChildren {
display: none;
}
.SRSymbol {
font-weight: bold;
color: #425E97;
font-family: Arial, Verdana, sans-serif;
text-decoration: none;
outline: none;
}
a.SRScope {
display: block;
color: #425E97;
font-family: Arial, Verdana, sans-serif;
text-decoration: none;
outline: none;
}
a.SRSymbol:focus, a.SRSymbol:active,
a.SRScope:focus, a.SRScope:active {
text-decoration: underline;
}
span.SRScope {
padding-left: 4px;
}
.SRPage .SRStatus {
padding: 2px 5px;
font-size: 8pt;
font-style: italic;
}
.SRResult {
display: none;
}
DIV.searchresults {
margin-left: 10px;
margin-right: 10px;
}
/*---------------- External search page results */
.searchresult {
background-color: #F0F3F8;
}
.pages b {
color: white;
padding: 5px 5px 3px 5px;
background-image: url("../tab_a.png");
background-repeat: repeat-x;
text-shadow: 0 1px 1px #000000;
}
.pages {
line-height: 17px;
margin-left: 4px;
text-decoration: none;
}
.hl {
font-weight: bold;
}
#searchresults {
margin-bottom: 20px;
}
.searchpages {
margin-top: 10px;
}

797
doc/html/search/search.js Normal file
View File

@ -0,0 +1,797 @@
// Search script generated by doxygen
// Copyright (C) 2009 by Dimitri van Heesch.
// The code in this file is loosly based on main.js, part of Natural Docs,
// which is Copyright (C) 2003-2008 Greg Valure
// Natural Docs is licensed under the GPL.
var indexSectionsWithContent =
{
0: "acir",
1: "i",
2: "acr"
};
var indexSectionNames =
{
0: "all",
1: "classes",
2: "functions"
};
function convertToId(search)
{
var result = '';
for (i=0;i<search.length;i++)
{
var c = search.charAt(i);
var cn = c.charCodeAt(0);
if (c.match(/[a-z0-9\u0080-\uFFFF]/))
{
result+=c;
}
else if (cn<16)
{
result+="_0"+cn.toString(16);
}
else
{
result+="_"+cn.toString(16);
}
}
return result;
}
function getXPos(item)
{
var x = 0;
if (item.offsetWidth)
{
while (item && item!=document.body)
{
x += item.offsetLeft;
item = item.offsetParent;
}
}
return x;
}
function getYPos(item)
{
var y = 0;
if (item.offsetWidth)
{
while (item && item!=document.body)
{
y += item.offsetTop;
item = item.offsetParent;
}
}
return y;
}
/* A class handling everything associated with the search panel.
Parameters:
name - The name of the global variable that will be
storing this instance. Is needed to be able to set timeouts.
resultPath - path to use for external files
*/
function SearchBox(name, resultsPath, inFrame, label)
{
if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); }
// ---------- Instance variables
this.name = name;
this.resultsPath = resultsPath;
this.keyTimeout = 0;
this.keyTimeoutLength = 500;
this.closeSelectionTimeout = 300;
this.lastSearchValue = "";
this.lastResultsPage = "";
this.hideTimeout = 0;
this.searchIndex = 0;
this.searchActive = false;
this.insideFrame = inFrame;
this.searchLabel = label;
// ----------- DOM Elements
this.DOMSearchField = function()
{ return document.getElementById("MSearchField"); }
this.DOMSearchSelect = function()
{ return document.getElementById("MSearchSelect"); }
this.DOMSearchSelectWindow = function()
{ return document.getElementById("MSearchSelectWindow"); }
this.DOMPopupSearchResults = function()
{ return document.getElementById("MSearchResults"); }
this.DOMPopupSearchResultsWindow = function()
{ return document.getElementById("MSearchResultsWindow"); }
this.DOMSearchClose = function()
{ return document.getElementById("MSearchClose"); }
this.DOMSearchBox = function()
{ return document.getElementById("MSearchBox"); }
// ------------ Event Handlers
// Called when focus is added or removed from the search field.
this.OnSearchFieldFocus = function(isActive)
{
this.Activate(isActive);
}
this.OnSearchSelectShow = function()
{
var searchSelectWindow = this.DOMSearchSelectWindow();
var searchField = this.DOMSearchSelect();
if (this.insideFrame)
{
var left = getXPos(searchField);
var top = getYPos(searchField);
left += searchField.offsetWidth + 6;
top += searchField.offsetHeight;
// show search selection popup
searchSelectWindow.style.display='block';
left -= searchSelectWindow.offsetWidth;
searchSelectWindow.style.left = left + 'px';
searchSelectWindow.style.top = top + 'px';
}
else
{
var left = getXPos(searchField);
var top = getYPos(searchField);
top += searchField.offsetHeight;
// show search selection popup
searchSelectWindow.style.display='block';
searchSelectWindow.style.left = left + 'px';
searchSelectWindow.style.top = top + 'px';
}
// stop selection hide timer
if (this.hideTimeout)
{
clearTimeout(this.hideTimeout);
this.hideTimeout=0;
}
return false; // to avoid "image drag" default event
}
this.OnSearchSelectHide = function()
{
this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()",
this.closeSelectionTimeout);
}
// Called when the content of the search field is changed.
this.OnSearchFieldChange = function(evt)
{
if (this.keyTimeout) // kill running timer
{
clearTimeout(this.keyTimeout);
this.keyTimeout = 0;
}
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==40 || e.keyCode==13)
{
if (e.shiftKey==1)
{
this.OnSearchSelectShow();
var win=this.DOMSearchSelectWindow();
for (i=0;i<win.childNodes.length;i++)
{
var child = win.childNodes[i]; // get span within a
if (child.className=='SelectItem')
{
child.focus();
return;
}
}
return;
}
else if (window.frames.MSearchResults.searchResults)
{
var elem = window.frames.MSearchResults.searchResults.NavNext(0);
if (elem) elem.focus();
}
}
else if (e.keyCode==27) // Escape out of the search field
{
this.DOMSearchField().blur();
this.DOMPopupSearchResultsWindow().style.display = 'none';
this.DOMSearchClose().style.display = 'none';
this.lastSearchValue = '';
this.Activate(false);
return;
}
// strip whitespaces
var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
if (searchValue != this.lastSearchValue) // search value has changed
{
if (searchValue != "") // non-empty search
{
// set timer for search update
this.keyTimeout = setTimeout(this.name + '.Search()',
this.keyTimeoutLength);
}
else // empty search field
{
this.DOMPopupSearchResultsWindow().style.display = 'none';
this.DOMSearchClose().style.display = 'none';
this.lastSearchValue = '';
}
}
}
this.SelectItemCount = function(id)
{
var count=0;
var win=this.DOMSearchSelectWindow();
for (i=0;i<win.childNodes.length;i++)
{
var child = win.childNodes[i]; // get span within a
if (child.className=='SelectItem')
{
count++;
}
}
return count;
}
this.SelectItemSet = function(id)
{
var i,j=0;
var win=this.DOMSearchSelectWindow();
for (i=0;i<win.childNodes.length;i++)
{
var child = win.childNodes[i]; // get span within a
if (child.className=='SelectItem')
{
var node = child.firstChild;
if (j==id)
{
node.innerHTML='&#8226;';
}
else
{
node.innerHTML='&#160;';
}
j++;
}
}
}
// Called when an search filter selection is made.
// set item with index id as the active item
this.OnSelectItem = function(id)
{
this.searchIndex = id;
this.SelectItemSet(id);
var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
if (searchValue!="" && this.searchActive) // something was found -> do a search
{
this.Search();
}
}
this.OnSearchSelectKey = function(evt)
{
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down
{
this.searchIndex++;
this.OnSelectItem(this.searchIndex);
}
else if (e.keyCode==38 && this.searchIndex>0) // Up
{
this.searchIndex--;
this.OnSelectItem(this.searchIndex);
}
else if (e.keyCode==13 || e.keyCode==27)
{
this.OnSelectItem(this.searchIndex);
this.CloseSelectionWindow();
this.DOMSearchField().focus();
}
return false;
}
// --------- Actions
// Closes the results window.
this.CloseResultsWindow = function()
{
this.DOMPopupSearchResultsWindow().style.display = 'none';
this.DOMSearchClose().style.display = 'none';
this.Activate(false);
}
this.CloseSelectionWindow = function()
{
this.DOMSearchSelectWindow().style.display = 'none';
}
// Performs a search.
this.Search = function()
{
this.keyTimeout = 0;
// strip leading whitespace
var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
var code = searchValue.toLowerCase().charCodeAt(0);
var idxChar = searchValue.substr(0, 1).toLowerCase();
if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair
{
idxChar = searchValue.substr(0, 2);
}
var resultsPage;
var resultsPageWithSearch;
var hasResultsPage;
var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);
if (idx!=-1)
{
var hexCode=idx.toString(16);
resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html';
resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
hasResultsPage = true;
}
else // nothing available for this search term
{
resultsPage = this.resultsPath + '/nomatches.html';
resultsPageWithSearch = resultsPage;
hasResultsPage = false;
}
window.frames.MSearchResults.location = resultsPageWithSearch;
var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
if (domPopupSearchResultsWindow.style.display!='block')
{
var domSearchBox = this.DOMSearchBox();
this.DOMSearchClose().style.display = 'inline';
if (this.insideFrame)
{
var domPopupSearchResults = this.DOMPopupSearchResults();
domPopupSearchResultsWindow.style.position = 'relative';
domPopupSearchResultsWindow.style.display = 'block';
var width = document.body.clientWidth - 8; // the -8 is for IE :-(
domPopupSearchResultsWindow.style.width = width + 'px';
domPopupSearchResults.style.width = width + 'px';
}
else
{
var domPopupSearchResults = this.DOMPopupSearchResults();
var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;
var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1;
domPopupSearchResultsWindow.style.display = 'block';
left -= domPopupSearchResults.offsetWidth;
domPopupSearchResultsWindow.style.top = top + 'px';
domPopupSearchResultsWindow.style.left = left + 'px';
}
}
this.lastSearchValue = searchValue;
this.lastResultsPage = resultsPage;
}
// -------- Activation Functions
// Activates or deactivates the search panel, resetting things to
// their default values if necessary.
this.Activate = function(isActive)
{
if (isActive || // open it
this.DOMPopupSearchResultsWindow().style.display == 'block'
)
{
this.DOMSearchBox().className = 'MSearchBoxActive';
var searchField = this.DOMSearchField();
if (searchField.value == this.searchLabel) // clear "Search" term upon entry
{
searchField.value = '';
this.searchActive = true;
}
}
else if (!isActive) // directly remove the panel
{
this.DOMSearchBox().className = 'MSearchBoxInactive';
this.DOMSearchField().value = this.searchLabel;
this.searchActive = false;
this.lastSearchValue = ''
this.lastResultsPage = '';
}
}
}
// -----------------------------------------------------------------------
// The class that handles everything on the search results page.
function SearchResults(name)
{
// The number of matches from the last run of <Search()>.
this.lastMatchCount = 0;
this.lastKey = 0;
this.repeatOn = false;
// Toggles the visibility of the passed element ID.
this.FindChildElement = function(id)
{
var parentElement = document.getElementById(id);
var element = parentElement.firstChild;
while (element && element!=parentElement)
{
if (element.nodeName == 'DIV' && element.className == 'SRChildren')
{
return element;
}
if (element.nodeName == 'DIV' && element.hasChildNodes())
{
element = element.firstChild;
}
else if (element.nextSibling)
{
element = element.nextSibling;
}
else
{
do
{
element = element.parentNode;
}
while (element && element!=parentElement && !element.nextSibling);
if (element && element!=parentElement)
{
element = element.nextSibling;
}
}
}
}
this.Toggle = function(id)
{
var element = this.FindChildElement(id);
if (element)
{
if (element.style.display == 'block')
{
element.style.display = 'none';
}
else
{
element.style.display = 'block';
}
}
}
// Searches for the passed string. If there is no parameter,
// it takes it from the URL query.
//
// Always returns true, since other documents may try to call it
// and that may or may not be possible.
this.Search = function(search)
{
if (!search) // get search word from URL
{
search = window.location.search;
search = search.substring(1); // Remove the leading '?'
search = unescape(search);
}
search = search.replace(/^ +/, ""); // strip leading spaces
search = search.replace(/ +$/, ""); // strip trailing spaces
search = search.toLowerCase();
search = convertToId(search);
var resultRows = document.getElementsByTagName("div");
var matches = 0;
var i = 0;
while (i < resultRows.length)
{
var row = resultRows.item(i);
if (row.className == "SRResult")
{
var rowMatchName = row.id.toLowerCase();
rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
if (search.length<=rowMatchName.length &&
rowMatchName.substr(0, search.length)==search)
{
row.style.display = 'block';
matches++;
}
else
{
row.style.display = 'none';
}
}
i++;
}
document.getElementById("Searching").style.display='none';
if (matches == 0) // no results
{
document.getElementById("NoMatches").style.display='block';
}
else // at least one result
{
document.getElementById("NoMatches").style.display='none';
}
this.lastMatchCount = matches;
return true;
}
// return the first item with index index or higher that is visible
this.NavNext = function(index)
{
var focusItem;
while (1)
{
var focusName = 'Item'+index;
focusItem = document.getElementById(focusName);
if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
{
break;
}
else if (!focusItem) // last element
{
break;
}
focusItem=null;
index++;
}
return focusItem;
}
this.NavPrev = function(index)
{
var focusItem;
while (1)
{
var focusName = 'Item'+index;
focusItem = document.getElementById(focusName);
if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
{
break;
}
else if (!focusItem) // last element
{
break;
}
focusItem=null;
index--;
}
return focusItem;
}
this.ProcessKeys = function(e)
{
if (e.type == "keydown")
{
this.repeatOn = false;
this.lastKey = e.keyCode;
}
else if (e.type == "keypress")
{
if (!this.repeatOn)
{
if (this.lastKey) this.repeatOn = true;
return false; // ignore first keypress after keydown
}
}
else if (e.type == "keyup")
{
this.lastKey = 0;
this.repeatOn = false;
}
return this.lastKey!=0;
}
this.Nav = function(evt,itemIndex)
{
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==13) return true;
if (!this.ProcessKeys(e)) return false;
if (this.lastKey==38) // Up
{
var newIndex = itemIndex-1;
var focusItem = this.NavPrev(newIndex);
if (focusItem)
{
var child = this.FindChildElement(focusItem.parentNode.parentNode.id);
if (child && child.style.display == 'block') // children visible
{
var n=0;
var tmpElem;
while (1) // search for last child
{
tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
if (tmpElem)
{
focusItem = tmpElem;
}
else // found it!
{
break;
}
n++;
}
}
}
if (focusItem)
{
focusItem.focus();
}
else // return focus to search field
{
parent.document.getElementById("MSearchField").focus();
}
}
else if (this.lastKey==40) // Down
{
var newIndex = itemIndex+1;
var focusItem;
var item = document.getElementById('Item'+itemIndex);
var elem = this.FindChildElement(item.parentNode.parentNode.id);
if (elem && elem.style.display == 'block') // children visible
{
focusItem = document.getElementById('Item'+itemIndex+'_c0');
}
if (!focusItem) focusItem = this.NavNext(newIndex);
if (focusItem) focusItem.focus();
}
else if (this.lastKey==39) // Right
{
var item = document.getElementById('Item'+itemIndex);
var elem = this.FindChildElement(item.parentNode.parentNode.id);
if (elem) elem.style.display = 'block';
}
else if (this.lastKey==37) // Left
{
var item = document.getElementById('Item'+itemIndex);
var elem = this.FindChildElement(item.parentNode.parentNode.id);
if (elem) elem.style.display = 'none';
}
else if (this.lastKey==27) // Escape
{
parent.searchBox.CloseResultsWindow();
parent.document.getElementById("MSearchField").focus();
}
else if (this.lastKey==13) // Enter
{
return true;
}
return false;
}
this.NavChild = function(evt,itemIndex,childIndex)
{
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==13) return true;
if (!this.ProcessKeys(e)) return false;
if (this.lastKey==38) // Up
{
if (childIndex>0)
{
var newIndex = childIndex-1;
document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
}
else // already at first child, jump to parent
{
document.getElementById('Item'+itemIndex).focus();
}
}
else if (this.lastKey==40) // Down
{
var newIndex = childIndex+1;
var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
if (!elem) // last child, jump to parent next parent
{
elem = this.NavNext(itemIndex+1);
}
if (elem)
{
elem.focus();
}
}
else if (this.lastKey==27) // Escape
{
parent.searchBox.CloseResultsWindow();
parent.document.getElementById("MSearchField").focus();
}
else if (this.lastKey==13) // Enter
{
return true;
}
return false;
}
}
function setKeyActions(elem,action)
{
elem.setAttribute('onkeydown',action);
elem.setAttribute('onkeypress',action);
elem.setAttribute('onkeyup',action);
}
function setClassAttr(elem,attr)
{
elem.setAttribute('class',attr);
elem.setAttribute('className',attr);
}
function createResults()
{
var results = document.getElementById("SRResults");
for (var e=0; e<searchData.length; e++)
{
var id = searchData[e][0];
var srResult = document.createElement('div');
srResult.setAttribute('id','SR_'+id);
setClassAttr(srResult,'SRResult');
var srEntry = document.createElement('div');
setClassAttr(srEntry,'SREntry');
var srLink = document.createElement('a');
srLink.setAttribute('id','Item'+e);
setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');
setClassAttr(srLink,'SRSymbol');
srLink.innerHTML = searchData[e][1][0];
srEntry.appendChild(srLink);
if (searchData[e][1].length==2) // single result
{
srLink.setAttribute('href',searchData[e][1][1][0]);
if (searchData[e][1][1][1])
{
srLink.setAttribute('target','_parent');
}
var srScope = document.createElement('span');
setClassAttr(srScope,'SRScope');
srScope.innerHTML = searchData[e][1][1][2];
srEntry.appendChild(srScope);
}
else // multiple results
{
srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")');
var srChildren = document.createElement('div');
setClassAttr(srChildren,'SRChildren');
for (var c=0; c<searchData[e][1].length-1; c++)
{
var srChild = document.createElement('a');
srChild.setAttribute('id','Item'+e+'_c'+c);
setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');
setClassAttr(srChild,'SRScope');
srChild.setAttribute('href',searchData[e][1][c+1][0]);
if (searchData[e][1][c+1][1])
{
srChild.setAttribute('target','_parent');
}
srChild.innerHTML = searchData[e][1][c+1][2];
srChildren.appendChild(srChild);
}
srEntry.appendChild(srChildren);
}
srResult.appendChild(srEntry);
results.appendChild(srResult);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 612 B

BIN
doc/html/sync_off.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 853 B

BIN
doc/html/sync_on.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 845 B

BIN
doc/html/tab_a.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 B

BIN
doc/html/tab_b.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 B

BIN
doc/html/tab_h.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

BIN
doc/html/tab_s.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

60
doc/html/tabs.css Normal file
View File

@ -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: #283A5D;
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);
}

106
include/irrDynamics.h Normal file
View File

@ -0,0 +1,106 @@
/*
irrDynamics - Light-weight Bullet Physics wrapper for the irrlicht graphics engine
Copyright (C) 2014 Otto Naderer - otto.naderer@aec.at
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <map>
#include <irrlicht.h>
class irrDynamics
{
public:
static irrDynamics* getInstance();
static void simStep(const irr::u32& curTimeStamp);
static void shutdown();
static void addTerrain(irr::scene::ITerrainSceneNode* terrain, irr::u32 lodLevel = 2);
//! Add a scene node that is represented as spherical behavior
/** This method adds an object with ball-like behavior to the physics, such as a SphereSceneNode.
* \param node The scene node to be animated by Bullet.
* \param radius The radius of the sphere in irrlicht units.
* \param mass The mass in units assigned to the object.
* \return The corresponding btRigidBody, if addidional parameters are desired to be set. */
static class btRigidBody* addSphericalObject(irr::scene::ISceneNode* node, irr::f32 radius, irr::f32 mass);
//! Add a scene node that is represented as a sturdy box
/** This method adds an object with block-like behavior to the physics, such as a CubeSceneNode.
* Its dimensions are calculated using the current axis-aligned bounding box.
* \param node The scene node to be animated by Bullet.
* \param mass The mass in units assigned to the object.
* \return The corresponding btRigidBody, if addidional parameters are desired to be set. */
static class btRigidBody* addBoxObject(irr::scene::ISceneNode* node, irr::f32 mass);
//! Add an infinite floor plane to the scene
/** Whenever an infinite floor catching all your objects is needed, use this method
* \param normal The normal vector of the floor plane. Default lays the plane along x- and z-axis (y up).
* \param offset The offset from the origin. If normal is default, only the y-value matters here (vert offset).
* \return The corresponding btRigidBody, if addidional parameters are desired to be set. */
static class btRigidBody* addFloor(const irr::core::vector3df& normal = irr::core::vector3df(0.f, 1.f, 0.f), const irr::core::vector3df& offset = irr::core::vector3df(0.f, 0.f, 0.f));
//! Create a hinge relation between two objects
/** This method physically attaches one scene node to the other in a hinge-like (swinging) relation.
* \note Both scene nodes have to be already added to the sim.
* \param nodeA The "parent" node the swinging one is attached to.
* \param nodeB The child element that will be animated by that relation.
* \param pivotInA A position relative to nodeA where the hinge relation will be placed.
* \param pivotInB A position relative to nodeB where the hinge relation will be placed.
* \param axisInA The axis in nodeA the hinge rotates around.
* \param axisInB The axis in nodeB the hinge rotates around.
* \return True, when both nodes were found in the physics representation and the relation was created.*/
static bool createHingeConstraint(irr::scene::ISceneNode* nodeA, irr::scene::ISceneNode* nodeB, const irr::core::vector3df& pivotInA, const irr::core::vector3df& pivotInB, const irr::core::vector3df& axisInA, const irr::core::vector3df& axisInB);
//! Create a point-to-point relation between two objects
/** More general than a hinge relation, the p2p can freely swing around all axis.
* \note Both scene nodes have to be already added to the sim.
* \param nodeA The "parent" node the swinging one is attached to.
* \param nodeB The child element that will be animated by that relation.
* \param pivotInA A position relative to nodeA where the hinge relation will be placed.
* \param pivotInB A position relative to nodeB where the hinge relation will be placed.
* \return True, when both nodes were found in the physics representation and the relation was created.*/
static bool createPoint2PointConstraint(irr::scene::ISceneNode* nodeA, irr::scene::ISceneNode* nodeB, const irr::core::vector3df& pivotInA, const irr::core::vector3df& pivotInB);
//! Remove an object from the physics
/** Call this whenever you either remove the corresponding scene node from the ISceneManager or you don't want
* to have it animated by the physics anymore.
* \param node The scene node to be removed from the physics.*/
static void removeObject(irr::scene::ISceneNode* node);
//! Applies a pushing force to the object
/** To move an object in a physics engine you do not set its position but you push it towards that place.
* Use this method to apply such a push represented as a 3D vector. As expected, the 'longer' the vector,
* the more powerful the push will be.
* \param node The scene node the force should be applied to.
* \param force The force to apply, the vector represents its direction, the vector length its power.*/
static void applyCentralForce(irr::scene::ISceneNode* node, const irr::core::vector3df& force);
static void setDamping(irr::scene::ISceneNode* node, irr::f32 linearDamping, irr::f32 angularDamping);
static void setPosition(irr::scene::ISceneNode* node, const irr::core::vector3df& newPos);
// static IRigidBody* createRigidBodyByBB(scene::ISceneNode* node, f32 mass);
static void debugDraw();
private:
irrDynamics();
irrDynamics(const irrDynamics& other);
std::map<irr::scene::ISceneNode*, class btRigidBody*> objects;
void updateObjects();
~irrDynamics();
static irrDynamics* instance;
void clearObjects();
//bt-related stuff
class btDefaultCollisionConfiguration *collisionConfiguration;
class btBroadphaseInterface *broadPhase;
class btCollisionDispatcher *dispatcher;
class btSequentialImpulseConstraintSolver *solver;
class btDiscreteDynamicsWorld* world;
// irrBulletWorld* bWorld;
irr::u32 lastStep;
};

51
prj/irrDynamics.cbp Normal file
View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="irrDynamics" />
<Option pch_mode="2" />
<Option compiler="gcc" />
<Build>
<Target title="Debug">
<Option output="../bin/irrDynamics" prefix_auto="1" extension_auto="1" />
<Option working_dir="" />
<Option object_output="../obj/Debug/" />
<Option type="2" />
<Option compiler="gcc" />
<Option createDefFile="1" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
</Compiler>
</Target>
<Target title="Release">
<Option output="../bin/irrDynamics" prefix_auto="1" extension_auto="1" />
<Option working_dir="" />
<Option object_output="../obj/Release/" />
<Option type="2" />
<Option compiler="gcc" />
<Option createDefFile="1" />
<Compiler>
<Add option="-Wall" />
<Add option="-O2" />
</Compiler>
<Linker>
<Add option="-s" />
</Linker>
</Target>
</Build>
<Compiler>
<Add directory="/usr/include/bullet" />
<Add directory="/usr/include/irrlicht" />
<Add directory="../include" />
</Compiler>
<Unit filename="../include/irrDynamics.h" />
<Unit filename="../src/irrDynamics.cpp" />
<Extensions>
<code_completion />
<envvars />
<lib_finder disable_auto="1" />
<debugger />
</Extensions>
</Project>
</CodeBlocks_project_file>

361
src/irrDynamics.cpp Normal file
View File

@ -0,0 +1,361 @@
/*
irrDynamics - Light-weight Bullet Physics wrapper for the irrlicht graphics engine
Copyright (C) 2014 Otto Naderer - otto.naderer@aec.at
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <btBulletCollisionCommon.h>
#include <btBulletDynamicsCommon.h>
#include "irrDynamics.h"
using namespace irr;
irrDynamics* irrDynamics::instance = NULL;
irrDynamics::irrDynamics() : lastStep(0)
{
// Initialize bullet
collisionConfiguration = new btDefaultCollisionConfiguration();
broadPhase = new btAxisSweep3(btVector3(-1000, -1000, -1000), btVector3(1000, 1000, 1000));
dispatcher = new btCollisionDispatcher(collisionConfiguration);
solver = new btSequentialImpulseConstraintSolver();
world = new btDiscreteDynamicsWorld(dispatcher, broadPhase, solver, collisionConfiguration);
}
irrDynamics* irrDynamics::getInstance()
{
if (!instance)
{
instance = new irrDynamics();
}
return instance;
}
void irrDynamics::simStep(const u32& curTimeStamp)
{
irrDynamics* inst = getInstance();
if (inst->lastStep == 0)
inst->lastStep = curTimeStamp;
inst->world->stepSimulation((curTimeStamp - inst->lastStep) * 0.001f, 5);
inst->updateObjects();
inst->lastStep = curTimeStamp;
}
void irrDynamics::shutdown()
{
irrDynamics* inst = getInstance();
inst->clearObjects();
delete inst->world;
delete inst->solver;
delete inst->dispatcher;
delete inst->broadPhase;
delete inst->collisionConfiguration;
}
void irrDynamics::addTerrain(scene::ITerrainSceneNode* terrain, u32 lodLevel)
{
irrDynamics* inst = getInstance();
terrain->updateAbsolutePosition();
core::vector3df irrPos = terrain->getPosition();
btVector3 btPos(irrPos.X, irrPos.Y, irrPos.Z);
btTransform Transform;
Transform.setIdentity();
Transform.setOrigin(btPos);
btDefaultMotionState *MotionState = new btDefaultMotionState(Transform);
btTriangleMesh * mTriMesh = new btTriangleMesh();
scene::CDynamicMeshBuffer* buffer = 0;
btVector3 vertices[3];
s32 j, k;
buffer = new scene::CDynamicMeshBuffer(irr::video::EVT_2TCOORDS, irr::video::EIT_32BIT);
(terrain)->getMeshBufferForLOD(*buffer, lodLevel);
core::vector3df terrScale = terrain->getScale();
//Build the triangleMesh
const u32 indexCount = buffer->getIndexCount();
printf("indeces: %u\n", indexCount);
video::S3DVertex2TCoords* mb_vertices = (irr::video::S3DVertex2TCoords*) buffer->getVertexBuffer().getData();
u32* mb_indices = (u32*) buffer->getIndices();
for (j = 0; (u32) j < indexCount; j += 3)
{
for (k = 0; k < 3; k++)
{
s32 index = mb_indices[j + k];
vertices[k] = btVector3(mb_vertices[index].Pos.X * terrScale.X, mb_vertices[index].Pos.Y * terrScale.Y, mb_vertices[index].Pos.Z * terrScale.Z);
}
mTriMesh->addTriangle(vertices[0], vertices[1], vertices[2]);
}
buffer->drop();
//Add the terrain collision shape to the world
btBvhTriangleMeshShape* mShape = new btBvhTriangleMeshShape(mTriMesh, true);
btRigidBody* rbody = new btRigidBody(0.f, MotionState, mShape);
inst->world->addRigidBody(rbody);
inst->objects.insert(std::pair<scene::ISceneNode*, btRigidBody*>(terrain, rbody));
terrain->grab();
}
void irrDynamics::debugDraw()
{
// getInstance()->bWorld->debugDrawWorld(true);
}
void irrDynamics::updateObjects()
{
for (std::map<scene::ISceneNode*, btRigidBody*>::iterator iter = objects.begin(); iter != objects.end(); iter++)
{
btVector3 Point = iter->second->getCenterOfMassPosition();
iter->first->setPosition(core::vector3df((f32)Point[0], (f32)Point[1], (f32)Point[2]));
// Set rotation
core::vector3df euler;
const btQuaternion& quat = iter->second->getOrientation();
core::quaternion q(quat.getX(), quat.getY(), quat.getZ(), quat.getW());
q.toEuler(euler);
euler *= core::RADTODEG;
iter->first->setRotation(euler);
}
}
void irrDynamics::removeObject(scene::ISceneNode* node)
{
irrDynamics* inst = getInstance();
std::map<scene::ISceneNode*, btRigidBody*>::iterator iter = inst->objects.find(node);
if (iter == inst->objects.end())
{
inst->world->removeRigidBody(iter->second);
// Free memory
delete iter->second->getMotionState();
delete iter->second->getCollisionShape();
delete iter->second;
iter->first->drop();
inst->objects.erase(iter);
}
else
{
printf("irrdynamics: object not found in map!\n");
}
}
void irrDynamics::clearObjects()
{
for (std::map<scene::ISceneNode*, btRigidBody*>::iterator iter = objects.begin(); iter != objects.end(); iter++)
{
world->removeRigidBody(iter->second);
// Free memory
delete iter->second->getMotionState();
delete iter->second->getCollisionShape();
delete iter->second;
iter->first->drop();
}
objects.clear();
}
btRigidBody* irrDynamics::addSphericalObject(scene::ISceneNode* node, f32 radius, f32 mass)
{
irrDynamics* inst = getInstance();
core::vector3df irrPos = node->getAbsolutePosition();
btVector3 tPosition(irrPos.X, irrPos.Y, irrPos.Z);
btTransform transform;
transform.setIdentity();
transform.setOrigin(tPosition);
btDefaultMotionState *motionState = new btDefaultMotionState(transform);
// Create the shape
btCollisionShape *shape = new btSphereShape(radius);
// Add mass
btVector3 localInertia;
shape->calculateLocalInertia(mass, localInertia);
// Create the rigid body object
btRigidBody *rigidBody = new btRigidBody(mass, motionState, shape, localInertia);
// Add it to the world
inst->world->addRigidBody(rigidBody);
inst->objects.insert(std::pair<scene::ISceneNode*, btRigidBody*>(node, rigidBody));
node->grab();
return rigidBody;
}
btRigidBody* irrDynamics::addBoxObject(scene::ISceneNode* node, f32 mass)
{
irrDynamics* inst = getInstance();
node->updateAbsolutePosition();
core::vector3df irrPos = node->getAbsolutePosition();
btVector3 tPosition(irrPos.X, irrPos.Y, irrPos.Z);
const core::aabbox3df aabox = node->getTransformedBoundingBox();
core::vector3df fullExtent = aabox.getExtent();
btVector3 halfExtent(fullExtent.X * .5f, fullExtent.Y * .5f, fullExtent.Z * .5f);
//get rotation to quaternion
core::vector3df rotationRadians = node->getRotation();
rotationRadians *= core::DEGTORAD;
core::quaternion quat(rotationRadians);
btTransform transform;
transform.setIdentity();
transform.setOrigin(tPosition);
transform.setRotation(btQuaternion(quat.X, quat.Y, quat.Z, quat.W));
btDefaultMotionState *motionState = new btDefaultMotionState(transform);
// Create the shape
btCollisionShape *shape = new btBoxShape(halfExtent);
// Add mass
btVector3 localInertia;
shape->calculateLocalInertia(mass, localInertia);
// Create the rigid body object
btRigidBody *rigidBody = new btRigidBody(mass, motionState, shape, localInertia);
// Add it to the world
inst->world->addRigidBody(rigidBody);
inst->objects.insert(std::pair<scene::ISceneNode*, btRigidBody*>(node, rigidBody));
node->grab();
return rigidBody;
}
bool irrDynamics::createHingeConstraint(scene::ISceneNode* nodeA, scene::ISceneNode* nodeB, const core::vector3df& pivotInA, const core::vector3df& pivotInB, const core::vector3df& axisInA, const irr::core::vector3df& axisInB)
{
irrDynamics* inst = getInstance();
//find the corresponding rigid bodies:
std::map<scene::ISceneNode*, btRigidBody*>::iterator iterA, iterB;
iterA = inst->objects.find(nodeA);
iterB = inst->objects.find(nodeB);
if (iterA == inst->objects.end())
{
printf("irrdynamics: Unable to find first node for constraint!\n");
return false;
}
if (iterB == inst->objects.end())
{
printf("irrdynamics: Unable to find second node for constraint!\n");
return false;
}
btHingeConstraint* constraint = new btHingeConstraint(*(iterA->second), *(iterB->second), btVector3(pivotInA.X, pivotInA.Y, pivotInA.Z), btVector3(pivotInB.X, pivotInB.Y, pivotInB.Z), btVector3(axisInA.X, axisInA.Y, axisInA.Z), btVector3(axisInB.X, axisInB.Y, axisInB.Z));
inst->world->addConstraint(constraint);
return true;
}
bool irrDynamics::createPoint2PointConstraint(scene::ISceneNode* nodeA, scene::ISceneNode* nodeB, const core::vector3df& pivotInA, const core::vector3df& pivotInB)
{
irrDynamics* inst = getInstance();
//find the corresponding rigid bodies:
std::map<scene::ISceneNode*, btRigidBody*>::iterator iterA, iterB;
iterA = inst->objects.find(nodeA);
iterB = inst->objects.find(nodeB);
if (iterA == inst->objects.end())
{
printf("irrdynamics: Unable to find first node for constraint!\n");
return false;
}
if (iterB == inst->objects.end())
{
printf("irrdynamics: Unable to find second node for constraint!\n");
return false;
}
btPoint2PointConstraint* constraint = new btPoint2PointConstraint(*(iterA->second), *(iterB->second), btVector3(pivotInA.X, pivotInA.Y, pivotInA.Z), btVector3(pivotInB.X, pivotInB.Y, pivotInB.Z));
inst->world->addConstraint(constraint);
return true;
}
void irrDynamics::applyCentralForce(scene::ISceneNode* node, const core::vector3df& force)
{
irrDynamics* inst = getInstance();
//find the corresponding rigid body:
std::map<scene::ISceneNode*, btRigidBody*>::iterator iter;
iter = inst->objects.find(node);
if (iter == inst->objects.end())
{
printf("irrdynamics: Unable to find node in list. Force application aborted.\n");
return;
}
iter->second->applyCentralForce(btVector3(force.X, force.Y, force.Z));
}
btRigidBody* irrDynamics::addFloor(const core::vector3df& normal, const core::vector3df& offset)
{
irrDynamics* inst = getInstance();
btVector3 tPosition(offset.X, offset.Y, offset.Z);
btTransform transform;
transform.setIdentity();
transform.setOrigin(tPosition);
btDefaultMotionState *motionState = new btDefaultMotionState(transform);
// Create the shape
btCollisionShape *shape = new btStaticPlaneShape(btVector3(normal.X, normal.Y, normal.Z), 0);
// Add mass
btVector3 localInertia;
shape->calculateLocalInertia(0.f, localInertia);
// Create the rigid body object
btRigidBody *rigidBody = new btRigidBody(0.f, motionState, shape, localInertia);
// Add it to the world
inst->world->addRigidBody(rigidBody);
return rigidBody;
}
void irrDynamics::setDamping(scene::ISceneNode* node, f32 linearDamping, f32 angularDamping)
{
irrDynamics* inst = getInstance();
//find the corresponding rigid body:
std::map<scene::ISceneNode*, btRigidBody*>::iterator iter;
iter = inst->objects.find(node);
if (iter == inst->objects.end())
{
printf("irrdynamics: Unable to find node in list. Damping application aborted.\n");
return;
}
iter->second->setDamping(linearDamping, angularDamping);
}
void irrDynamics::setPosition(scene::ISceneNode* node, const core::vector3df& newPos)
{
irrDynamics* inst = getInstance();
//find the corresponding rigid body:
std::map<scene::ISceneNode*, btRigidBody*>::iterator iter;
iter = inst->objects.find(node);
if (iter == inst->objects.end())
{
printf("irrdynamics: Unable to find node in list. Position update aborted.\n");
return;
}
btTransform transform = iter->second->getCenterOfMassTransform();
transform.setOrigin(btVector3(newPos.X, newPos.Y, newPos.Z));
iter->second->setCenterOfMassTransform(transform);
}