class_state_recorder.html 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
  5. <meta http-equiv="X-UA-Compatible" content="IE=11"/>
  6. <meta name="generator" content="Doxygen 1.12.0"/>
  7. <meta name="viewport" content="width=device-width, initial-scale=1"/>
  8. <title>Jolt Physics: StateRecorder Class Reference</title>
  9. <link href="tabs.css" rel="stylesheet" type="text/css"/>
  10. <script type="text/javascript" src="jquery.js"></script>
  11. <script type="text/javascript" src="dynsections.js"></script>
  12. <script type="text/javascript" src="clipboard.js"></script>
  13. <link href="navtree.css" rel="stylesheet" type="text/css"/>
  14. <script type="text/javascript" src="navtreedata.js"></script>
  15. <script type="text/javascript" src="navtree.js"></script>
  16. <script type="text/javascript" src="resize.js"></script>
  17. <script type="text/javascript" src="cookie.js"></script>
  18. <link href="search/search.css" rel="stylesheet" type="text/css"/>
  19. <script type="text/javascript" src="search/searchdata.js"></script>
  20. <script type="text/javascript" src="search/search.js"></script>
  21. <script type="text/x-mathjax-config">
  22. MathJax.Hub.Config({
  23. extensions: ["tex2jax.js"],
  24. jax: ["input/TeX","output/HTML-CSS"],
  25. });
  26. </script>
  27. <script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
  28. <link href="doxygen.css" rel="stylesheet" type="text/css" />
  29. </head>
  30. <body>
  31. <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
  32. <div id="titlearea">
  33. <table cellspacing="0" cellpadding="0">
  34. <tbody>
  35. <tr id="projectrow">
  36. <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
  37. <td id="projectalign">
  38. <div id="projectname">Jolt Physics
  39. </div>
  40. <div id="projectbrief">A multi core friendly Game Physics Engine</div>
  41. </td>
  42. </tr>
  43. </tbody>
  44. </table>
  45. </div>
  46. <!-- end header part -->
  47. <!-- Generated by Doxygen 1.12.0 -->
  48. <script type="text/javascript">
  49. /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  50. var searchBox = new SearchBox("searchBox", "search/",'.html');
  51. /* @license-end */
  52. </script>
  53. <script type="text/javascript">
  54. /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  55. $(function() { codefold.init(0); });
  56. /* @license-end */
  57. </script>
  58. <script type="text/javascript" src="menudata.js"></script>
  59. <script type="text/javascript" src="menu.js"></script>
  60. <script type="text/javascript">
  61. /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  62. $(function() {
  63. initMenu('',true,false,'search.php','Search',true);
  64. $(function() { init_search(); });
  65. });
  66. /* @license-end */
  67. </script>
  68. <div id="main-nav"></div>
  69. </div><!-- top -->
  70. <div id="side-nav" class="ui-resizable side-nav-resizable">
  71. <div id="nav-tree">
  72. <div id="nav-tree-contents">
  73. <div id="nav-sync" class="sync"></div>
  74. </div>
  75. </div>
  76. <div id="splitbar" style="-moz-user-select:none;"
  77. class="ui-resizable-handle">
  78. </div>
  79. </div>
  80. <script type="text/javascript">
  81. /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  82. $(function(){initNavTree('class_state_recorder.html',''); initResizable(true); });
  83. /* @license-end */
  84. </script>
  85. <div id="doc-content">
  86. <!-- window showing the filter options -->
  87. <div id="MSearchSelectWindow"
  88. onmouseover="return searchBox.OnSearchSelectShow()"
  89. onmouseout="return searchBox.OnSearchSelectHide()"
  90. onkeydown="return searchBox.OnSearchSelectKey(event)">
  91. </div>
  92. <!-- iframe showing the search results (closed by default) -->
  93. <div id="MSearchResultsWindow">
  94. <div id="MSearchResults">
  95. <div class="SRPage">
  96. <div id="SRIndex">
  97. <div id="SRResults"></div>
  98. <div class="SRStatus" id="Loading">Loading...</div>
  99. <div class="SRStatus" id="Searching">Searching...</div>
  100. <div class="SRStatus" id="NoMatches">No Matches</div>
  101. </div>
  102. </div>
  103. </div>
  104. </div>
  105. <div class="header">
  106. <div class="summary">
  107. <a href="#pub-methods">Public Member Functions</a> &#124;
  108. <a href="class_state_recorder-members.html">List of all members</a> </div>
  109. <div class="headertitle"><div class="title">StateRecorder Class Reference</div></div>
  110. </div><!--header-->
  111. <div class="contents">
  112. <p><code>#include &lt;<a class="el" href="_state_recorder_8h_source.html">StateRecorder.h</a>&gt;</code></p>
  113. <div class="dynheader">
  114. Inheritance diagram for StateRecorder:</div>
  115. <div class="dyncontent">
  116. <div class="center">
  117. <img src="class_state_recorder.png" usemap="#StateRecorder_map" alt=""/>
  118. <map id="StateRecorder_map" name="StateRecorder_map">
  119. <area href="class_stream_in.html" title="Simple binary input stream." alt="StreamIn" shape="rect" coords="0,56,115,80"/>
  120. <area href="class_stream_out.html" title="Simple binary output stream." alt="StreamOut" shape="rect" coords="125,56,240,80"/>
  121. <area href="class_non_copyable.html" title="Class that makes another class non-copyable. Usage: Inherit from NonCopyable." alt="NonCopyable" shape="rect" coords="0,0,115,24"/>
  122. <area href="class_non_copyable.html" title="Class that makes another class non-copyable. Usage: Inherit from NonCopyable." alt="NonCopyable" shape="rect" coords="125,0,240,24"/>
  123. <area href="class_state_recorder_impl.html" title="Implementation of the StateRecorder class that uses a stringstream as underlying store and that imple..." alt="StateRecorderImpl" shape="rect" coords="62,168,177,192"/>
  124. </map>
  125. </div></div>
  126. <table class="memberdecls">
  127. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
  128. Public Member Functions</h2></td></tr>
  129. <tr class="memitem:ae41b09b37188ba73227dae4e070c53a8" id="r_ae41b09b37188ba73227dae4e070c53a8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae41b09b37188ba73227dae4e070c53a8">StateRecorder</a> ()=default</td></tr>
  130. <tr class="memdesc:ae41b09b37188ba73227dae4e070c53a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <br /></td></tr>
  131. <tr class="separator:ae41b09b37188ba73227dae4e070c53a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
  132. <tr class="memitem:a3818f8d05147108719da00491da8569a" id="r_a3818f8d05147108719da00491da8569a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3818f8d05147108719da00491da8569a">StateRecorder</a> (const <a class="el" href="class_state_recorder.html">StateRecorder</a> &amp;inRHS)</td></tr>
  133. <tr class="separator:a3818f8d05147108719da00491da8569a"><td class="memSeparator" colspan="2">&#160;</td></tr>
  134. <tr class="memitem:a94551fc91c9a1580a818dab49ba6e26d" id="r_a94551fc91c9a1580a818dab49ba6e26d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a94551fc91c9a1580a818dab49ba6e26d">SetValidating</a> (bool inValidating)</td></tr>
  135. <tr class="separator:a94551fc91c9a1580a818dab49ba6e26d"><td class="memSeparator" colspan="2">&#160;</td></tr>
  136. <tr class="memitem:a347912d4c7bbcb1e1c1e3689a3fccd56" id="r_a347912d4c7bbcb1e1c1e3689a3fccd56"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a347912d4c7bbcb1e1c1e3689a3fccd56">IsValidating</a> () const</td></tr>
  137. <tr class="separator:a347912d4c7bbcb1e1c1e3689a3fccd56"><td class="memSeparator" colspan="2">&#160;</td></tr>
  138. <tr class="memitem:a9f80c185b11dbe0025d9bc6f947427d0" id="r_a9f80c185b11dbe0025d9bc6f947427d0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9f80c185b11dbe0025d9bc6f947427d0">SetIsLastPart</a> (bool inIsLastPart)</td></tr>
  139. <tr class="separator:a9f80c185b11dbe0025d9bc6f947427d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
  140. <tr class="memitem:a280ea10b47c58efe1264cc9fc0261200" id="r_a280ea10b47c58efe1264cc9fc0261200"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a280ea10b47c58efe1264cc9fc0261200">IsLastPart</a> () const</td></tr>
  141. <tr class="separator:a280ea10b47c58efe1264cc9fc0261200"><td class="memSeparator" colspan="2">&#160;</td></tr>
  142. <tr class="inherit_header pub_methods_class_stream_in"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_class_stream_in')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="class_stream_in.html">StreamIn</a></td></tr>
  143. <tr class="memitem:a294d4a6d12c54b6bd31b67a627075c34 inherit pub_methods_class_stream_in" id="r_a294d4a6d12c54b6bd31b67a627075c34"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_in.html#a294d4a6d12c54b6bd31b67a627075c34">~StreamIn</a> ()=default</td></tr>
  144. <tr class="memdesc:a294d4a6d12c54b6bd31b67a627075c34 inherit pub_methods_class_stream_in"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtual destructor. <br /></td></tr>
  145. <tr class="separator:a294d4a6d12c54b6bd31b67a627075c34 inherit pub_methods_class_stream_in"><td class="memSeparator" colspan="2">&#160;</td></tr>
  146. <tr class="memitem:a85303621b160dd9280ca9b7ff67d8217 inherit pub_methods_class_stream_in" id="r_a85303621b160dd9280ca9b7ff67d8217"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_in.html#a85303621b160dd9280ca9b7ff67d8217">ReadBytes</a> (void *outData, size_t inNumBytes)=0</td></tr>
  147. <tr class="memdesc:a85303621b160dd9280ca9b7ff67d8217 inherit pub_methods_class_stream_in"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a string of bytes from the binary stream. <br /></td></tr>
  148. <tr class="separator:a85303621b160dd9280ca9b7ff67d8217 inherit pub_methods_class_stream_in"><td class="memSeparator" colspan="2">&#160;</td></tr>
  149. <tr class="memitem:a9a2a616b63703ec5c80423ad2692d06e inherit pub_methods_class_stream_in" id="r_a9a2a616b63703ec5c80423ad2692d06e"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_in.html#a9a2a616b63703ec5c80423ad2692d06e">IsEOF</a> () const =0</td></tr>
  150. <tr class="separator:a9a2a616b63703ec5c80423ad2692d06e inherit pub_methods_class_stream_in"><td class="memSeparator" colspan="2">&#160;</td></tr>
  151. <tr class="memitem:abda7a049c94885abd04a6e583e4c5b37 inherit pub_methods_class_stream_in" id="r_abda7a049c94885abd04a6e583e4c5b37"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_in.html#abda7a049c94885abd04a6e583e4c5b37">IsFailed</a> () const =0</td></tr>
  152. <tr class="memdesc:abda7a049c94885abd04a6e583e4c5b37 inherit pub_methods_class_stream_in"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if there was an IO failure. <br /></td></tr>
  153. <tr class="separator:abda7a049c94885abd04a6e583e4c5b37 inherit pub_methods_class_stream_in"><td class="memSeparator" colspan="2">&#160;</td></tr>
  154. <tr class="memitem:a5ae9304c310edfc5ef1c67a95e36b1f3 inherit pub_methods_class_stream_in" id="r_a5ae9304c310edfc5ef1c67a95e36b1f3"><td class="memTemplParams" colspan="2">template&lt;class T , std::enable_if_t&lt; std::is_trivially_copyable_v&lt; T &gt;, bool &gt; = true&gt; </td></tr>
  155. <tr class="memitem:a5ae9304c310edfc5ef1c67a95e36b1f3 inherit pub_methods_class_stream_in"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_stream_in.html#a5ae9304c310edfc5ef1c67a95e36b1f3">Read</a> (T &amp;outT)</td></tr>
  156. <tr class="memdesc:a5ae9304c310edfc5ef1c67a95e36b1f3 inherit pub_methods_class_stream_in"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a primitive (e.g. float, int, etc.) from the binary stream. <br /></td></tr>
  157. <tr class="separator:a5ae9304c310edfc5ef1c67a95e36b1f3 inherit pub_methods_class_stream_in"><td class="memSeparator" colspan="2">&#160;</td></tr>
  158. <tr class="memitem:ad746a4bb01b4d67767bf1bd200edcb01 inherit pub_methods_class_stream_in" id="r_ad746a4bb01b4d67767bf1bd200edcb01"><td class="memTemplParams" colspan="2">template&lt;class T , class A , std::enable_if_t&lt; std::is_trivially_copyable_v&lt; T &gt;, bool &gt; = true&gt; </td></tr>
  159. <tr class="memitem:ad746a4bb01b4d67767bf1bd200edcb01 inherit pub_methods_class_stream_in"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_stream_in.html#ad746a4bb01b4d67767bf1bd200edcb01">Read</a> (<a class="el" href="class_array.html">Array</a>&lt; T, A &gt; &amp;outT)</td></tr>
  160. <tr class="memdesc:ad746a4bb01b4d67767bf1bd200edcb01 inherit pub_methods_class_stream_in"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a vector of primitives from the binary stream. <br /></td></tr>
  161. <tr class="separator:ad746a4bb01b4d67767bf1bd200edcb01 inherit pub_methods_class_stream_in"><td class="memSeparator" colspan="2">&#160;</td></tr>
  162. <tr class="memitem:a6f7322ce8d07d787701f3417aa46f265 inherit pub_methods_class_stream_in" id="r_a6f7322ce8d07d787701f3417aa46f265"><td class="memTemplParams" colspan="2">template&lt;class Type , class Traits , class Allocator &gt; </td></tr>
  163. <tr class="memitem:a6f7322ce8d07d787701f3417aa46f265 inherit pub_methods_class_stream_in"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_stream_in.html#a6f7322ce8d07d787701f3417aa46f265">Read</a> (std::basic_string&lt; Type, Traits, Allocator &gt; &amp;outString)</td></tr>
  164. <tr class="memdesc:a6f7322ce8d07d787701f3417aa46f265 inherit pub_methods_class_stream_in"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a string from the binary stream (reads the number of characters and then the characters) <br /></td></tr>
  165. <tr class="separator:a6f7322ce8d07d787701f3417aa46f265 inherit pub_methods_class_stream_in"><td class="memSeparator" colspan="2">&#160;</td></tr>
  166. <tr class="memitem:a685f7e59d2108a0c61dad52c042d7e45 inherit pub_methods_class_stream_in" id="r_a685f7e59d2108a0c61dad52c042d7e45"><td class="memTemplParams" colspan="2">template&lt;class T , class A , typename F &gt; </td></tr>
  167. <tr class="memitem:a685f7e59d2108a0c61dad52c042d7e45 inherit pub_methods_class_stream_in"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_stream_in.html#a685f7e59d2108a0c61dad52c042d7e45">Read</a> (<a class="el" href="class_array.html">Array</a>&lt; T, A &gt; &amp;outT, const F &amp;inReadElement)</td></tr>
  168. <tr class="memdesc:a685f7e59d2108a0c61dad52c042d7e45 inherit pub_methods_class_stream_in"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a vector of primitives from the binary stream using a custom function to read the elements. <br /></td></tr>
  169. <tr class="separator:a685f7e59d2108a0c61dad52c042d7e45 inherit pub_methods_class_stream_in"><td class="memSeparator" colspan="2">&#160;</td></tr>
  170. <tr class="memitem:a73a1ab9b7b8c0807e88b9b969acb24bf inherit pub_methods_class_stream_in" id="r_a73a1ab9b7b8c0807e88b9b969acb24bf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_in.html#a73a1ab9b7b8c0807e88b9b969acb24bf">Read</a> (<a class="el" href="class_vec3.html">Vec3</a> &amp;outVec)</td></tr>
  171. <tr class="memdesc:a73a1ab9b7b8c0807e88b9b969acb24bf inherit pub_methods_class_stream_in"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a <a class="el" href="class_vec3.html">Vec3</a> (don't read W) <br /></td></tr>
  172. <tr class="separator:a73a1ab9b7b8c0807e88b9b969acb24bf inherit pub_methods_class_stream_in"><td class="memSeparator" colspan="2">&#160;</td></tr>
  173. <tr class="memitem:ae2a6c51ed1848c45cd9974cec509020e inherit pub_methods_class_stream_in" id="r_ae2a6c51ed1848c45cd9974cec509020e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_in.html#ae2a6c51ed1848c45cd9974cec509020e">Read</a> (<a class="el" href="class_d_vec3.html">DVec3</a> &amp;outVec)</td></tr>
  174. <tr class="memdesc:ae2a6c51ed1848c45cd9974cec509020e inherit pub_methods_class_stream_in"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a <a class="el" href="class_d_vec3.html">DVec3</a> (don't read W) <br /></td></tr>
  175. <tr class="separator:ae2a6c51ed1848c45cd9974cec509020e inherit pub_methods_class_stream_in"><td class="memSeparator" colspan="2">&#160;</td></tr>
  176. <tr class="memitem:ad4bea0c5775a7c29522359528d98c654 inherit pub_methods_class_stream_in" id="r_ad4bea0c5775a7c29522359528d98c654"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_in.html#ad4bea0c5775a7c29522359528d98c654">Read</a> (<a class="el" href="class_d_mat44.html">DMat44</a> &amp;outVec)</td></tr>
  177. <tr class="memdesc:ad4bea0c5775a7c29522359528d98c654 inherit pub_methods_class_stream_in"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a <a class="el" href="class_d_mat44.html" title="Holds a 4x4 matrix of floats with the last column consisting of doubles.">DMat44</a> (don't read W component of translation) <br /></td></tr>
  178. <tr class="separator:ad4bea0c5775a7c29522359528d98c654 inherit pub_methods_class_stream_in"><td class="memSeparator" colspan="2">&#160;</td></tr>
  179. <tr class="inherit_header pub_methods_class_non_copyable"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_class_non_copyable')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="class_non_copyable.html">NonCopyable</a></td></tr>
  180. <tr class="memitem:a809b6e4ade7ae32f6d248f2a3b783d45 inherit pub_methods_class_non_copyable" id="r_a809b6e4ade7ae32f6d248f2a3b783d45"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_non_copyable.html#a809b6e4ade7ae32f6d248f2a3b783d45">NonCopyable</a> ()=default</td></tr>
  181. <tr class="separator:a809b6e4ade7ae32f6d248f2a3b783d45 inherit pub_methods_class_non_copyable"><td class="memSeparator" colspan="2">&#160;</td></tr>
  182. <tr class="memitem:a501d34ffcc34b30de6d541887a901057 inherit pub_methods_class_non_copyable" id="r_a501d34ffcc34b30de6d541887a901057"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_non_copyable.html#a501d34ffcc34b30de6d541887a901057">NonCopyable</a> (const <a class="el" href="class_non_copyable.html">NonCopyable</a> &amp;)=delete</td></tr>
  183. <tr class="separator:a501d34ffcc34b30de6d541887a901057 inherit pub_methods_class_non_copyable"><td class="memSeparator" colspan="2">&#160;</td></tr>
  184. <tr class="memitem:aaf9b12dcaae80c9d304df7a941d4e21f inherit pub_methods_class_non_copyable" id="r_aaf9b12dcaae80c9d304df7a941d4e21f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_non_copyable.html#aaf9b12dcaae80c9d304df7a941d4e21f">operator=</a> (const <a class="el" href="class_non_copyable.html">NonCopyable</a> &amp;)=delete</td></tr>
  185. <tr class="separator:aaf9b12dcaae80c9d304df7a941d4e21f inherit pub_methods_class_non_copyable"><td class="memSeparator" colspan="2">&#160;</td></tr>
  186. <tr class="inherit_header pub_methods_class_stream_out"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_class_stream_out')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="class_stream_out.html">StreamOut</a></td></tr>
  187. <tr class="memitem:aed2cfe74214f89965cb640ac9d1bbb8d inherit pub_methods_class_stream_out" id="r_aed2cfe74214f89965cb640ac9d1bbb8d"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_out.html#aed2cfe74214f89965cb640ac9d1bbb8d">~StreamOut</a> ()=default</td></tr>
  188. <tr class="memdesc:aed2cfe74214f89965cb640ac9d1bbb8d inherit pub_methods_class_stream_out"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtual destructor. <br /></td></tr>
  189. <tr class="separator:aed2cfe74214f89965cb640ac9d1bbb8d inherit pub_methods_class_stream_out"><td class="memSeparator" colspan="2">&#160;</td></tr>
  190. <tr class="memitem:aa80bff3216178ef392693f1997803d99 inherit pub_methods_class_stream_out" id="r_aa80bff3216178ef392693f1997803d99"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_out.html#aa80bff3216178ef392693f1997803d99">WriteBytes</a> (const void *inData, size_t inNumBytes)=0</td></tr>
  191. <tr class="memdesc:aa80bff3216178ef392693f1997803d99 inherit pub_methods_class_stream_out"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a string of bytes to the binary stream. <br /></td></tr>
  192. <tr class="separator:aa80bff3216178ef392693f1997803d99 inherit pub_methods_class_stream_out"><td class="memSeparator" colspan="2">&#160;</td></tr>
  193. <tr class="memitem:a30c9fa2d50a64c0da4d6dc5ae614e756 inherit pub_methods_class_stream_out" id="r_a30c9fa2d50a64c0da4d6dc5ae614e756"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_out.html#a30c9fa2d50a64c0da4d6dc5ae614e756">IsFailed</a> () const =0</td></tr>
  194. <tr class="memdesc:a30c9fa2d50a64c0da4d6dc5ae614e756 inherit pub_methods_class_stream_out"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if there was an IO failure. <br /></td></tr>
  195. <tr class="separator:a30c9fa2d50a64c0da4d6dc5ae614e756 inherit pub_methods_class_stream_out"><td class="memSeparator" colspan="2">&#160;</td></tr>
  196. <tr class="memitem:a879dce6c6c6ca5e63835fe61cc745966 inherit pub_methods_class_stream_out" id="r_a879dce6c6c6ca5e63835fe61cc745966"><td class="memTemplParams" colspan="2">template&lt;class T , std::enable_if_t&lt; std::is_trivially_copyable_v&lt; T &gt;, bool &gt; = true&gt; </td></tr>
  197. <tr class="memitem:a879dce6c6c6ca5e63835fe61cc745966 inherit pub_methods_class_stream_out"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_stream_out.html#a879dce6c6c6ca5e63835fe61cc745966">Write</a> (const T &amp;inT)</td></tr>
  198. <tr class="memdesc:a879dce6c6c6ca5e63835fe61cc745966 inherit pub_methods_class_stream_out"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a primitive (e.g. float, int, etc.) to the binary stream. <br /></td></tr>
  199. <tr class="separator:a879dce6c6c6ca5e63835fe61cc745966 inherit pub_methods_class_stream_out"><td class="memSeparator" colspan="2">&#160;</td></tr>
  200. <tr class="memitem:a8e42be27dba5676379ba723df9171c4f inherit pub_methods_class_stream_out" id="r_a8e42be27dba5676379ba723df9171c4f"><td class="memTemplParams" colspan="2">template&lt;class T , class A , std::enable_if_t&lt; std::is_trivially_copyable_v&lt; T &gt;, bool &gt; = true&gt; </td></tr>
  201. <tr class="memitem:a8e42be27dba5676379ba723df9171c4f inherit pub_methods_class_stream_out"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_stream_out.html#a8e42be27dba5676379ba723df9171c4f">Write</a> (const <a class="el" href="class_array.html">Array</a>&lt; T, A &gt; &amp;inT)</td></tr>
  202. <tr class="memdesc:a8e42be27dba5676379ba723df9171c4f inherit pub_methods_class_stream_out"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a vector of primitives to the binary stream. <br /></td></tr>
  203. <tr class="separator:a8e42be27dba5676379ba723df9171c4f inherit pub_methods_class_stream_out"><td class="memSeparator" colspan="2">&#160;</td></tr>
  204. <tr class="memitem:ae1b1f7fee2bcf46896c198ff13eabf10 inherit pub_methods_class_stream_out" id="r_ae1b1f7fee2bcf46896c198ff13eabf10"><td class="memTemplParams" colspan="2">template&lt;class Type , class Traits , class Allocator &gt; </td></tr>
  205. <tr class="memitem:ae1b1f7fee2bcf46896c198ff13eabf10 inherit pub_methods_class_stream_out"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_stream_out.html#ae1b1f7fee2bcf46896c198ff13eabf10">Write</a> (const std::basic_string&lt; Type, Traits, Allocator &gt; &amp;inString)</td></tr>
  206. <tr class="memdesc:ae1b1f7fee2bcf46896c198ff13eabf10 inherit pub_methods_class_stream_out"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a string to the binary stream (writes the number of characters and then the characters) <br /></td></tr>
  207. <tr class="separator:ae1b1f7fee2bcf46896c198ff13eabf10 inherit pub_methods_class_stream_out"><td class="memSeparator" colspan="2">&#160;</td></tr>
  208. <tr class="memitem:a29fc4077677e5c0fea89194178326684 inherit pub_methods_class_stream_out" id="r_a29fc4077677e5c0fea89194178326684"><td class="memTemplParams" colspan="2">template&lt;class T , class A , typename F &gt; </td></tr>
  209. <tr class="memitem:a29fc4077677e5c0fea89194178326684 inherit pub_methods_class_stream_out"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_stream_out.html#a29fc4077677e5c0fea89194178326684">Write</a> (const <a class="el" href="class_array.html">Array</a>&lt; T, A &gt; &amp;inT, const F &amp;inWriteElement)</td></tr>
  210. <tr class="memdesc:a29fc4077677e5c0fea89194178326684 inherit pub_methods_class_stream_out"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a vector of primitives to the binary stream using a custom write function. <br /></td></tr>
  211. <tr class="separator:a29fc4077677e5c0fea89194178326684 inherit pub_methods_class_stream_out"><td class="memSeparator" colspan="2">&#160;</td></tr>
  212. <tr class="memitem:a067f43db7805fa22f5ffefbefac23b13 inherit pub_methods_class_stream_out" id="r_a067f43db7805fa22f5ffefbefac23b13"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_out.html#a067f43db7805fa22f5ffefbefac23b13">Write</a> (const <a class="el" href="class_vec3.html">Vec3</a> &amp;inVec)</td></tr>
  213. <tr class="memdesc:a067f43db7805fa22f5ffefbefac23b13 inherit pub_methods_class_stream_out"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a <a class="el" href="class_vec3.html">Vec3</a> (don't write W) <br /></td></tr>
  214. <tr class="separator:a067f43db7805fa22f5ffefbefac23b13 inherit pub_methods_class_stream_out"><td class="memSeparator" colspan="2">&#160;</td></tr>
  215. <tr class="memitem:a5c9dec0ec5fb4af10a3258f03fa99bb1 inherit pub_methods_class_stream_out" id="r_a5c9dec0ec5fb4af10a3258f03fa99bb1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_out.html#a5c9dec0ec5fb4af10a3258f03fa99bb1">Write</a> (const <a class="el" href="class_d_vec3.html">DVec3</a> &amp;inVec)</td></tr>
  216. <tr class="memdesc:a5c9dec0ec5fb4af10a3258f03fa99bb1 inherit pub_methods_class_stream_out"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a <a class="el" href="class_d_vec3.html">DVec3</a> (don't write W) <br /></td></tr>
  217. <tr class="separator:a5c9dec0ec5fb4af10a3258f03fa99bb1 inherit pub_methods_class_stream_out"><td class="memSeparator" colspan="2">&#160;</td></tr>
  218. <tr class="memitem:a076687e0453908f83336761c13b75f19 inherit pub_methods_class_stream_out" id="r_a076687e0453908f83336761c13b75f19"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_out.html#a076687e0453908f83336761c13b75f19">Write</a> (const <a class="el" href="class_d_mat44.html">DMat44</a> &amp;inVec)</td></tr>
  219. <tr class="memdesc:a076687e0453908f83336761c13b75f19 inherit pub_methods_class_stream_out"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a <a class="el" href="class_d_mat44.html" title="Holds a 4x4 matrix of floats with the last column consisting of doubles.">DMat44</a> (don't write W component of translation) <br /></td></tr>
  220. <tr class="separator:a076687e0453908f83336761c13b75f19 inherit pub_methods_class_stream_out"><td class="memSeparator" colspan="2">&#160;</td></tr>
  221. </table>
  222. <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
  223. <div class="textblock"><p>Class that records the state of a physics system. Can be used to check if the simulation is deterministic by putting the recorder in validation mode. Can be used to restore the state to an earlier point in time. Note that only the state that is modified by the simulation is saved, configuration settings like body friction or restitution, motion quality etc. are not saved and need to be saved by the user if desired. </p>
  224. </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
  225. <a id="ae41b09b37188ba73227dae4e070c53a8" name="ae41b09b37188ba73227dae4e070c53a8"></a>
  226. <h2 class="memtitle"><span class="permalink"><a href="#ae41b09b37188ba73227dae4e070c53a8">&#9670;&#160;</a></span>StateRecorder() <span class="overload">[1/2]</span></h2>
  227. <div class="memitem">
  228. <div class="memproto">
  229. <table class="mlabels">
  230. <tr>
  231. <td class="mlabels-left">
  232. <table class="memname">
  233. <tr>
  234. <td class="memname">StateRecorder::StateRecorder </td>
  235. <td>(</td>
  236. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  237. <td></td>
  238. </tr>
  239. </table>
  240. </td>
  241. <td class="mlabels-right">
  242. <span class="mlabels"><span class="mlabel">default</span></span> </td>
  243. </tr>
  244. </table>
  245. </div><div class="memdoc">
  246. <p>Constructor. </p>
  247. </div>
  248. </div>
  249. <a id="a3818f8d05147108719da00491da8569a" name="a3818f8d05147108719da00491da8569a"></a>
  250. <h2 class="memtitle"><span class="permalink"><a href="#a3818f8d05147108719da00491da8569a">&#9670;&#160;</a></span>StateRecorder() <span class="overload">[2/2]</span></h2>
  251. <div class="memitem">
  252. <div class="memproto">
  253. <table class="mlabels">
  254. <tr>
  255. <td class="mlabels-left">
  256. <table class="memname">
  257. <tr>
  258. <td class="memname">StateRecorder::StateRecorder </td>
  259. <td>(</td>
  260. <td class="paramtype">const <a class="el" href="class_state_recorder.html">StateRecorder</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inRHS</em></span></td><td>)</td>
  261. <td></td>
  262. </tr>
  263. </table>
  264. </td>
  265. <td class="mlabels-right">
  266. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  267. </tr>
  268. </table>
  269. </div><div class="memdoc">
  270. </div>
  271. </div>
  272. <h2 class="groupheader">Member Function Documentation</h2>
  273. <a id="a280ea10b47c58efe1264cc9fc0261200" name="a280ea10b47c58efe1264cc9fc0261200"></a>
  274. <h2 class="memtitle"><span class="permalink"><a href="#a280ea10b47c58efe1264cc9fc0261200">&#9670;&#160;</a></span>IsLastPart()</h2>
  275. <div class="memitem">
  276. <div class="memproto">
  277. <table class="mlabels">
  278. <tr>
  279. <td class="mlabels-left">
  280. <table class="memname">
  281. <tr>
  282. <td class="memname">bool StateRecorder::IsLastPart </td>
  283. <td>(</td>
  284. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  285. <td> const</td>
  286. </tr>
  287. </table>
  288. </td>
  289. <td class="mlabels-right">
  290. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  291. </tr>
  292. </table>
  293. </div><div class="memdoc">
  294. </div>
  295. </div>
  296. <a id="a347912d4c7bbcb1e1c1e3689a3fccd56" name="a347912d4c7bbcb1e1c1e3689a3fccd56"></a>
  297. <h2 class="memtitle"><span class="permalink"><a href="#a347912d4c7bbcb1e1c1e3689a3fccd56">&#9670;&#160;</a></span>IsValidating()</h2>
  298. <div class="memitem">
  299. <div class="memproto">
  300. <table class="mlabels">
  301. <tr>
  302. <td class="mlabels-left">
  303. <table class="memname">
  304. <tr>
  305. <td class="memname">bool StateRecorder::IsValidating </td>
  306. <td>(</td>
  307. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  308. <td> const</td>
  309. </tr>
  310. </table>
  311. </td>
  312. <td class="mlabels-right">
  313. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  314. </tr>
  315. </table>
  316. </div><div class="memdoc">
  317. </div>
  318. </div>
  319. <a id="a9f80c185b11dbe0025d9bc6f947427d0" name="a9f80c185b11dbe0025d9bc6f947427d0"></a>
  320. <h2 class="memtitle"><span class="permalink"><a href="#a9f80c185b11dbe0025d9bc6f947427d0">&#9670;&#160;</a></span>SetIsLastPart()</h2>
  321. <div class="memitem">
  322. <div class="memproto">
  323. <table class="mlabels">
  324. <tr>
  325. <td class="mlabels-left">
  326. <table class="memname">
  327. <tr>
  328. <td class="memname">void StateRecorder::SetIsLastPart </td>
  329. <td>(</td>
  330. <td class="paramtype">bool</td> <td class="paramname"><span class="paramname"><em>inIsLastPart</em></span></td><td>)</td>
  331. <td></td>
  332. </tr>
  333. </table>
  334. </td>
  335. <td class="mlabels-right">
  336. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  337. </tr>
  338. </table>
  339. </div><div class="memdoc">
  340. <p>This allows splitting the state in multiple parts. While restoring, only the last part should have this flag set to true. Note that you should ensure that the different parts contain information for disjoint sets of bodies, constraints and contacts. E.g. if you restore the same contact twice, you get undefined behavior. In order to create disjoint sets you can use the <a class="el" href="class_state_recorder_filter.html" title="User callbacks that allow determining which parts of the simulation should be saved by a StateRecorde...">StateRecorderFilter</a>. Note that validation is not compatible with restoring a simulation state in multiple parts. </p>
  341. </div>
  342. </div>
  343. <a id="a94551fc91c9a1580a818dab49ba6e26d" name="a94551fc91c9a1580a818dab49ba6e26d"></a>
  344. <h2 class="memtitle"><span class="permalink"><a href="#a94551fc91c9a1580a818dab49ba6e26d">&#9670;&#160;</a></span>SetValidating()</h2>
  345. <div class="memitem">
  346. <div class="memproto">
  347. <table class="mlabels">
  348. <tr>
  349. <td class="mlabels-left">
  350. <table class="memname">
  351. <tr>
  352. <td class="memname">void StateRecorder::SetValidating </td>
  353. <td>(</td>
  354. <td class="paramtype">bool</td> <td class="paramname"><span class="paramname"><em>inValidating</em></span></td><td>)</td>
  355. <td></td>
  356. </tr>
  357. </table>
  358. </td>
  359. <td class="mlabels-right">
  360. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  361. </tr>
  362. </table>
  363. </div><div class="memdoc">
  364. <p>Sets the stream in validation mode. In this case the physics system ensures that before it calls ReadBytes that it will ensure that those bytes contain the current state. This makes it possible to step and save the state, restore to the previous step and step again and when the recorded state is not the same it can restore the expected state and any byte that changes due to a ReadBytes function can be caught to find out which part of the simulation is not deterministic. Note that validation only works when saving the full state of the simulation (<a class="el" href="_state_recorder_8h.html#ac746db0a34def4dfd77ccd487ae36eb4ab1c94ca2fbc3e78fc30069c8d0f01680" title="Save all state.">EStateRecorderState::All</a>, <a class="el" href="class_state_recorder_filter.html" title="User callbacks that allow determining which parts of the simulation should be saved by a StateRecorde...">StateRecorderFilter</a> == nullptr). </p>
  365. </div>
  366. </div>
  367. <hr/>The documentation for this class was generated from the following file:<ul>
  368. <li>Jolt/Physics/<a class="el" href="_state_recorder_8h_source.html">StateRecorder.h</a></li>
  369. </ul>
  370. </div><!-- contents -->
  371. </div><!-- doc-content -->
  372. <!-- start footer part -->
  373. <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  374. <ul>
  375. <li class="navelem"><a class="el" href="class_state_recorder.html">StateRecorder</a></li>
  376. <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
  377. </ul>
  378. </div>
  379. </body>
  380. </html>