mage-engine 3.24.4 → 3.24.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/.github/workflows/test.yml +29 -0
  2. package/__mocks__/three.js +178 -0
  3. package/coverage/clover.xml +3094 -0
  4. package/coverage/coverage-final.json +60 -0
  5. package/coverage/lcov-report/base.css +224 -0
  6. package/coverage/lcov-report/block-navigation.js +87 -0
  7. package/coverage/lcov-report/entities/Element.js.html +3463 -0
  8. package/coverage/lcov-report/entities/Entity.js.html +2740 -0
  9. package/coverage/lcov-report/entities/animations/AnimationHandler.js.html +1006 -0
  10. package/coverage/lcov-report/entities/animations/SpriteAnimationHandler.js.html +91 -0
  11. package/coverage/lcov-report/entities/animations/index.html +131 -0
  12. package/coverage/lcov-report/entities/animations/lib/NodeFrame.js.html +214 -0
  13. package/coverage/lcov-report/entities/animations/lib/index.html +116 -0
  14. package/coverage/lcov-report/entities/base/AnimatedSprite.js.html +220 -0
  15. package/coverage/lcov-report/entities/base/Axes.js.html +316 -0
  16. package/coverage/lcov-report/entities/base/Box.js.html +253 -0
  17. package/coverage/lcov-report/entities/base/Cone.js.html +304 -0
  18. package/coverage/lcov-report/entities/base/Cube.js.html +217 -0
  19. package/coverage/lcov-report/entities/base/CurveLine.js.html +166 -0
  20. package/coverage/lcov-report/entities/base/Cylinder.js.html +259 -0
  21. package/coverage/lcov-report/entities/base/Grid.js.html +190 -0
  22. package/coverage/lcov-report/entities/base/HelperSprite.js.html +163 -0
  23. package/coverage/lcov-report/entities/base/Label.js.html +373 -0
  24. package/coverage/lcov-report/entities/base/Line.js.html +334 -0
  25. package/coverage/lcov-report/entities/base/Plane.js.html +265 -0
  26. package/coverage/lcov-report/entities/base/Sphere.js.html +217 -0
  27. package/coverage/lcov-report/entities/base/Sprite.js.html +445 -0
  28. package/coverage/lcov-report/entities/base/index.html +326 -0
  29. package/coverage/lcov-report/entities/base/index.js.html +172 -0
  30. package/coverage/lcov-report/entities/camera.js.html +751 -0
  31. package/coverage/lcov-report/entities/constants.js.html +655 -0
  32. package/coverage/lcov-report/entities/index.html +176 -0
  33. package/coverage/lcov-report/entities/index.js.html +187 -0
  34. package/coverage/lcov-report/favicon.png +0 -0
  35. package/coverage/lcov-report/images/Images.js.html +724 -0
  36. package/coverage/lcov-report/images/index.html +116 -0
  37. package/coverage/lcov-report/index.html +266 -0
  38. package/coverage/lcov-report/lib/Color.js.html +187 -0
  39. package/coverage/lcov-report/lib/array.js.html +97 -0
  40. package/coverage/lcov-report/lib/colliders.js.html +217 -0
  41. package/coverage/lcov-report/lib/constants.js.html +1171 -0
  42. package/coverage/lcov-report/lib/dom.js.html +202 -0
  43. package/coverage/lcov-report/lib/easing.js.html +229 -0
  44. package/coverage/lcov-report/lib/features.js.html +826 -0
  45. package/coverage/lcov-report/lib/functions.js.html +130 -0
  46. package/coverage/lcov-report/lib/index.html +401 -0
  47. package/coverage/lcov-report/lib/location.js.html +127 -0
  48. package/coverage/lcov-report/lib/map.js.html +172 -0
  49. package/coverage/lcov-report/lib/math.js.html +511 -0
  50. package/coverage/lcov-report/lib/meshUtils.js.html +685 -0
  51. package/coverage/lcov-report/lib/messages.js.html +415 -0
  52. package/coverage/lcov-report/lib/network.js.html +136 -0
  53. package/coverage/lcov-report/lib/object.js.html +187 -0
  54. package/coverage/lcov-report/lib/palettes.js.html +259 -0
  55. package/coverage/lcov-report/lib/query.js.html +172 -0
  56. package/coverage/lcov-report/lib/strings.js.html +139 -0
  57. package/coverage/lcov-report/lib/url.js.html +85 -0
  58. package/coverage/lcov-report/lib/utils/assets.js.html +94 -0
  59. package/coverage/lcov-report/lib/utils/index.html +116 -0
  60. package/coverage/lcov-report/lib/uuid.js.html +112 -0
  61. package/coverage/lcov-report/models/Models.js.html +1489 -0
  62. package/coverage/lcov-report/models/SkeletonUtils.js.html +1879 -0
  63. package/coverage/lcov-report/models/index.html +131 -0
  64. package/coverage/lcov-report/physics/constants.js.html +307 -0
  65. package/coverage/lcov-report/physics/hitbox.js.html +235 -0
  66. package/coverage/lcov-report/physics/index.html +176 -0
  67. package/coverage/lcov-report/physics/index.js.html +1324 -0
  68. package/coverage/lcov-report/physics/messages.js.html +238 -0
  69. package/coverage/lcov-report/physics/utils.js.html +679 -0
  70. package/coverage/lcov-report/physics/worker/effects.js.html +325 -0
  71. package/coverage/lcov-report/physics/worker/elements.js.html +694 -0
  72. package/coverage/lcov-report/physics/worker/index.html +176 -0
  73. package/coverage/lcov-report/physics/worker/lib/dispatcher.js.html +160 -0
  74. package/coverage/lcov-report/physics/worker/lib/index.html +131 -0
  75. package/coverage/lcov-report/physics/worker/lib/math.js.html +109 -0
  76. package/coverage/lcov-report/physics/worker/player.js.html +301 -0
  77. package/coverage/lcov-report/physics/worker/vehicles.js.html +832 -0
  78. package/coverage/lcov-report/physics/worker/world.js.html +796 -0
  79. package/coverage/lcov-report/prettify.css +1 -0
  80. package/coverage/lcov-report/prettify.js +2 -0
  81. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  82. package/coverage/lcov-report/sorter.js +210 -0
  83. package/coverage/lcov.info +6368 -0
  84. package/dist/mage.js +8012 -9023
  85. package/eslint.config.js +73 -0
  86. package/jest.config.js +31 -0
  87. package/package.json +17 -5
@@ -0,0 +1,694 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for physics/worker/elements.js</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../prettify.css" />
9
+ <link rel="stylesheet" href="../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">physics/worker</a> elements.js</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">0% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>0/112</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">0% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>0/23</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">0% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>0/9</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">0% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>0/109</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line low'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
270
+ <span class="cline-any cline-neutral">&nbsp;</span>
271
+ <span class="cline-any cline-neutral">&nbsp;</span>
272
+ <span class="cline-any cline-neutral">&nbsp;</span>
273
+ <span class="cline-any cline-neutral">&nbsp;</span>
274
+ <span class="cline-any cline-neutral">&nbsp;</span>
275
+ <span class="cline-any cline-neutral">&nbsp;</span>
276
+ <span class="cline-any cline-neutral">&nbsp;</span>
277
+ <span class="cline-any cline-neutral">&nbsp;</span>
278
+ <span class="cline-any cline-neutral">&nbsp;</span>
279
+ <span class="cline-any cline-neutral">&nbsp;</span>
280
+ <span class="cline-any cline-neutral">&nbsp;</span>
281
+ <span class="cline-any cline-neutral">&nbsp;</span>
282
+ <span class="cline-any cline-neutral">&nbsp;</span>
283
+ <span class="cline-any cline-neutral">&nbsp;</span>
284
+ <span class="cline-any cline-neutral">&nbsp;</span>
285
+ <span class="cline-any cline-no">&nbsp;</span>
286
+ <span class="cline-any cline-neutral">&nbsp;</span>
287
+ <span class="cline-any cline-neutral">&nbsp;</span>
288
+ <span class="cline-any cline-neutral">&nbsp;</span>
289
+ <span class="cline-any cline-neutral">&nbsp;</span>
290
+ <span class="cline-any cline-neutral">&nbsp;</span>
291
+ <span class="cline-any cline-neutral">&nbsp;</span>
292
+ <span class="cline-any cline-neutral">&nbsp;</span>
293
+ <span class="cline-any cline-neutral">&nbsp;</span>
294
+ <span class="cline-any cline-no">&nbsp;</span>
295
+ <span class="cline-any cline-neutral">&nbsp;</span>
296
+ <span class="cline-any cline-no">&nbsp;</span>
297
+ <span class="cline-any cline-neutral">&nbsp;</span>
298
+ <span class="cline-any cline-no">&nbsp;</span>
299
+ <span class="cline-any cline-no">&nbsp;</span>
300
+ <span class="cline-any cline-no">&nbsp;</span>
301
+ <span class="cline-any cline-no">&nbsp;</span>
302
+ <span class="cline-any cline-no">&nbsp;</span>
303
+ <span class="cline-any cline-no">&nbsp;</span>
304
+ <span class="cline-any cline-neutral">&nbsp;</span>
305
+ <span class="cline-any cline-no">&nbsp;</span>
306
+ <span class="cline-any cline-no">&nbsp;</span>
307
+ <span class="cline-any cline-neutral">&nbsp;</span>
308
+ <span class="cline-any cline-neutral">&nbsp;</span>
309
+ <span class="cline-any cline-neutral">&nbsp;</span>
310
+ <span class="cline-any cline-no">&nbsp;</span>
311
+ <span class="cline-any cline-no">&nbsp;</span>
312
+ <span class="cline-any cline-no">&nbsp;</span>
313
+ <span class="cline-any cline-no">&nbsp;</span>
314
+ <span class="cline-any cline-no">&nbsp;</span>
315
+ <span class="cline-any cline-neutral">&nbsp;</span>
316
+ <span class="cline-any cline-neutral">&nbsp;</span>
317
+ <span class="cline-any cline-neutral">&nbsp;</span>
318
+ <span class="cline-any cline-no">&nbsp;</span>
319
+ <span class="cline-any cline-neutral">&nbsp;</span>
320
+ <span class="cline-any cline-no">&nbsp;</span>
321
+ <span class="cline-any cline-neutral">&nbsp;</span>
322
+ <span class="cline-any cline-no">&nbsp;</span>
323
+ <span class="cline-any cline-neutral">&nbsp;</span>
324
+ <span class="cline-any cline-neutral">&nbsp;</span>
325
+ <span class="cline-any cline-no">&nbsp;</span>
326
+ <span class="cline-any cline-neutral">&nbsp;</span>
327
+ <span class="cline-any cline-neutral">&nbsp;</span>
328
+ <span class="cline-any cline-neutral">&nbsp;</span>
329
+ <span class="cline-any cline-neutral">&nbsp;</span>
330
+ <span class="cline-any cline-neutral">&nbsp;</span>
331
+ <span class="cline-any cline-neutral">&nbsp;</span>
332
+ <span class="cline-any cline-neutral">&nbsp;</span>
333
+ <span class="cline-any cline-neutral">&nbsp;</span>
334
+ <span class="cline-any cline-neutral">&nbsp;</span>
335
+ <span class="cline-any cline-no">&nbsp;</span>
336
+ <span class="cline-any cline-neutral">&nbsp;</span>
337
+ <span class="cline-any cline-no">&nbsp;</span>
338
+ <span class="cline-any cline-neutral">&nbsp;</span>
339
+ <span class="cline-any cline-no">&nbsp;</span>
340
+ <span class="cline-any cline-no">&nbsp;</span>
341
+ <span class="cline-any cline-no">&nbsp;</span>
342
+ <span class="cline-any cline-no">&nbsp;</span>
343
+ <span class="cline-any cline-neutral">&nbsp;</span>
344
+ <span class="cline-any cline-no">&nbsp;</span>
345
+ <span class="cline-any cline-no">&nbsp;</span>
346
+ <span class="cline-any cline-no">&nbsp;</span>
347
+ <span class="cline-any cline-no">&nbsp;</span>
348
+ <span class="cline-any cline-neutral">&nbsp;</span>
349
+ <span class="cline-any cline-no">&nbsp;</span>
350
+ <span class="cline-any cline-no">&nbsp;</span>
351
+ <span class="cline-any cline-no">&nbsp;</span>
352
+ <span class="cline-any cline-no">&nbsp;</span>
353
+ <span class="cline-any cline-no">&nbsp;</span>
354
+ <span class="cline-any cline-neutral">&nbsp;</span>
355
+ <span class="cline-any cline-no">&nbsp;</span>
356
+ <span class="cline-any cline-no">&nbsp;</span>
357
+ <span class="cline-any cline-no">&nbsp;</span>
358
+ <span class="cline-any cline-neutral">&nbsp;</span>
359
+ <span class="cline-any cline-no">&nbsp;</span>
360
+ <span class="cline-any cline-no">&nbsp;</span>
361
+ <span class="cline-any cline-no">&nbsp;</span>
362
+ <span class="cline-any cline-no">&nbsp;</span>
363
+ <span class="cline-any cline-neutral">&nbsp;</span>
364
+ <span class="cline-any cline-neutral">&nbsp;</span>
365
+ <span class="cline-any cline-no">&nbsp;</span>
366
+ <span class="cline-any cline-no">&nbsp;</span>
367
+ <span class="cline-any cline-no">&nbsp;</span>
368
+ <span class="cline-any cline-no">&nbsp;</span>
369
+ <span class="cline-any cline-neutral">&nbsp;</span>
370
+ <span class="cline-any cline-no">&nbsp;</span>
371
+ <span class="cline-any cline-no">&nbsp;</span>
372
+ <span class="cline-any cline-no">&nbsp;</span>
373
+ <span class="cline-any cline-no">&nbsp;</span>
374
+ <span class="cline-any cline-neutral">&nbsp;</span>
375
+ <span class="cline-any cline-neutral">&nbsp;</span>
376
+ <span class="cline-any cline-neutral">&nbsp;</span>
377
+ <span class="cline-any cline-neutral">&nbsp;</span>
378
+ <span class="cline-any cline-no">&nbsp;</span>
379
+ <span class="cline-any cline-no">&nbsp;</span>
380
+ <span class="cline-any cline-no">&nbsp;</span>
381
+ <span class="cline-any cline-neutral">&nbsp;</span>
382
+ <span class="cline-any cline-no">&nbsp;</span>
383
+ <span class="cline-any cline-no">&nbsp;</span>
384
+ <span class="cline-any cline-neutral">&nbsp;</span>
385
+ <span class="cline-any cline-no">&nbsp;</span>
386
+ <span class="cline-any cline-no">&nbsp;</span>
387
+ <span class="cline-any cline-no">&nbsp;</span>
388
+ <span class="cline-any cline-neutral">&nbsp;</span>
389
+ <span class="cline-any cline-no">&nbsp;</span>
390
+ <span class="cline-any cline-no">&nbsp;</span>
391
+ <span class="cline-any cline-neutral">&nbsp;</span>
392
+ <span class="cline-any cline-neutral">&nbsp;</span>
393
+ <span class="cline-any cline-no">&nbsp;</span>
394
+ <span class="cline-any cline-no">&nbsp;</span>
395
+ <span class="cline-any cline-neutral">&nbsp;</span>
396
+ <span class="cline-any cline-no">&nbsp;</span>
397
+ <span class="cline-any cline-no">&nbsp;</span>
398
+ <span class="cline-any cline-neutral">&nbsp;</span>
399
+ <span class="cline-any cline-no">&nbsp;</span>
400
+ <span class="cline-any cline-neutral">&nbsp;</span>
401
+ <span class="cline-any cline-neutral">&nbsp;</span>
402
+ <span class="cline-any cline-no">&nbsp;</span>
403
+ <span class="cline-any cline-no">&nbsp;</span>
404
+ <span class="cline-any cline-neutral">&nbsp;</span>
405
+ <span class="cline-any cline-no">&nbsp;</span>
406
+ <span class="cline-any cline-no">&nbsp;</span>
407
+ <span class="cline-any cline-neutral">&nbsp;</span>
408
+ <span class="cline-any cline-no">&nbsp;</span>
409
+ <span class="cline-any cline-neutral">&nbsp;</span>
410
+ <span class="cline-any cline-neutral">&nbsp;</span>
411
+ <span class="cline-any cline-no">&nbsp;</span>
412
+ <span class="cline-any cline-no">&nbsp;</span>
413
+ <span class="cline-any cline-no">&nbsp;</span>
414
+ <span class="cline-any cline-no">&nbsp;</span>
415
+ <span class="cline-any cline-neutral">&nbsp;</span>
416
+ <span class="cline-any cline-no">&nbsp;</span>
417
+ <span class="cline-any cline-no">&nbsp;</span>
418
+ <span class="cline-any cline-no">&nbsp;</span>
419
+ <span class="cline-any cline-no">&nbsp;</span>
420
+ <span class="cline-any cline-neutral">&nbsp;</span>
421
+ <span class="cline-any cline-neutral">&nbsp;</span>
422
+ <span class="cline-any cline-neutral">&nbsp;</span>
423
+ <span class="cline-any cline-no">&nbsp;</span>
424
+ <span class="cline-any cline-no">&nbsp;</span>
425
+ <span class="cline-any cline-no">&nbsp;</span>
426
+ <span class="cline-any cline-neutral">&nbsp;</span>
427
+ <span class="cline-any cline-no">&nbsp;</span>
428
+ <span class="cline-any cline-neutral">&nbsp;</span>
429
+ <span class="cline-any cline-no">&nbsp;</span>
430
+ <span class="cline-any cline-no">&nbsp;</span>
431
+ <span class="cline-any cline-neutral">&nbsp;</span>
432
+ <span class="cline-any cline-no">&nbsp;</span>
433
+ <span class="cline-any cline-neutral">&nbsp;</span>
434
+ <span class="cline-any cline-neutral">&nbsp;</span>
435
+ <span class="cline-any cline-no">&nbsp;</span>
436
+ <span class="cline-any cline-no">&nbsp;</span>
437
+ <span class="cline-any cline-no">&nbsp;</span>
438
+ <span class="cline-any cline-neutral">&nbsp;</span>
439
+ <span class="cline-any cline-no">&nbsp;</span>
440
+ <span class="cline-any cline-neutral">&nbsp;</span>
441
+ <span class="cline-any cline-no">&nbsp;</span>
442
+ <span class="cline-any cline-no">&nbsp;</span>
443
+ <span class="cline-any cline-no">&nbsp;</span>
444
+ <span class="cline-any cline-neutral">&nbsp;</span>
445
+ <span class="cline-any cline-no">&nbsp;</span>
446
+ <span class="cline-any cline-neutral">&nbsp;</span>
447
+ <span class="cline-any cline-neutral">&nbsp;</span>
448
+ <span class="cline-any cline-no">&nbsp;</span>
449
+ <span class="cline-any cline-no">&nbsp;</span>
450
+ <span class="cline-any cline-no">&nbsp;</span>
451
+ <span class="cline-any cline-neutral">&nbsp;</span>
452
+ <span class="cline-any cline-no">&nbsp;</span>
453
+ <span class="cline-any cline-no">&nbsp;</span>
454
+ <span class="cline-any cline-no">&nbsp;</span>
455
+ <span class="cline-any cline-no">&nbsp;</span>
456
+ <span class="cline-any cline-neutral">&nbsp;</span>
457
+ <span class="cline-any cline-neutral">&nbsp;</span>
458
+ <span class="cline-any cline-neutral">&nbsp;</span>
459
+ <span class="cline-any cline-no">&nbsp;</span>
460
+ <span class="cline-any cline-no">&nbsp;</span>
461
+ <span class="cline-any cline-neutral">&nbsp;</span>
462
+ <span class="cline-any cline-no">&nbsp;</span>
463
+ <span class="cline-any cline-no">&nbsp;</span>
464
+ <span class="cline-any cline-neutral">&nbsp;</span>
465
+ <span class="cline-any cline-no">&nbsp;</span>
466
+ <span class="cline-any cline-no">&nbsp;</span>
467
+ <span class="cline-any cline-no">&nbsp;</span>
468
+ <span class="cline-any cline-neutral">&nbsp;</span>
469
+ <span class="cline-any cline-no">&nbsp;</span>
470
+ <span class="cline-any cline-no">&nbsp;</span>
471
+ <span class="cline-any cline-neutral">&nbsp;</span>
472
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import dispatcher from './lib/dispatcher';
473
+ import world from './world';
474
+ &nbsp;
475
+ import {
476
+ applyMatrix4ToVector3
477
+ } from './lib/math';
478
+ &nbsp;
479
+ import {
480
+ DEFAULT_RIGIDBODY_STATE,
481
+ TYPES,
482
+ DEFAULT_SCALE,
483
+ DISABLE_DEACTIVATION,
484
+ DEFAULT_LINEAR_VELOCITY,
485
+ DEFAULT_IMPULSE
486
+ } from '../constants';
487
+ &nbsp;
488
+ export const createRigidBody = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(s</span>hape, options) =&gt; {</span>
489
+ const {
490
+ uuid,
491
+ position,
492
+ quaternion,
493
+ mass,
494
+ friction,
495
+ restitution = <span class="branch-0 cbranch-no" title="branch not covered" >.9,</span>
496
+ damping = <span class="branch-0 cbranch-no" title="branch not covered" >{ linear: 0.2, angular: 0.2 }</span>
497
+ } = <span class="cstat-no" title="statement not covered" >options;</span>
498
+ &nbsp;
499
+ const transform = <span class="cstat-no" title="statement not covered" >new Ammo.btTransform();</span>
500
+ &nbsp;
501
+ <span class="cstat-no" title="statement not covered" > transform.setIdentity();</span>
502
+ <span class="cstat-no" title="statement not covered" > transform.setOrigin(new Ammo.btVector3(position.x, position.y, position.z));</span>
503
+ <span class="cstat-no" title="statement not covered" > transform.setRotation(new Ammo.btQuaternion(quaternion.x, quaternion.y, quaternion.z, quaternion.w));</span>
504
+ const motionState = <span class="cstat-no" title="statement not covered" >new Ammo.btDefaultMotionState(transform);</span>
505
+ const localInertia = <span class="cstat-no" title="statement not covered" >new Ammo.btVector3(0, 0, 0);</span>
506
+ <span class="cstat-no" title="statement not covered" > shape.calculateLocalInertia(mass, localInertia);</span>
507
+ &nbsp;
508
+ const rbInfo = <span class="cstat-no" title="statement not covered" >new Ammo.btRigidBodyConstructionInfo(mass, motionState, shape, localInertia);</span>
509
+ const body = <span class="cstat-no" title="statement not covered" >new Ammo.btRigidBody(rbInfo);</span>
510
+ &nbsp;
511
+
512
+ &nbsp;
513
+ <span class="cstat-no" title="statement not covered" > if (mass &gt; 0) {</span>
514
+ <span class="cstat-no" title="statement not covered" > body.setFriction(friction);</span>
515
+ <span class="cstat-no" title="statement not covered" > body.setRestitution(restitution);</span>
516
+ <span class="cstat-no" title="statement not covered" > body.setDamping(damping.linear, damping.angular);</span>
517
+ <span class="cstat-no" title="statement not covered" > body.setActivationState(DISABLE_DEACTIVATION);</span>
518
+ }
519
+ &nbsp;
520
+ // storing uuid for future reference
521
+ <span class="cstat-no" title="statement not covered" > body.uuid = uuid;</span>
522
+ &nbsp;
523
+ <span class="cstat-no" title="statement not covered" > world.addRigidBody(body);</span>
524
+ &nbsp;
525
+ <span class="cstat-no" title="statement not covered" > return body;</span>
526
+ }
527
+ &nbsp;
528
+ export const addModel = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(o</span>ptions) =&gt; {</span>
529
+ const {
530
+ uuid,
531
+ vertices,
532
+ matrices,
533
+ indexes,
534
+ position,
535
+ quaternion,
536
+ mass = <span class="branch-0 cbranch-no" title="branch not covered" >0,</span>
537
+ friction = <span class="branch-0 cbranch-no" title="branch not covered" >2</span>
538
+ } = <span class="cstat-no" title="statement not covered" >options;</span>
539
+ &nbsp;
540
+ const scale = <span class="cstat-no" title="statement not covered" >DEFAULT_SCALE;</span>
541
+ &nbsp;
542
+ const bta = <span class="cstat-no" title="statement not covered" >new Ammo.btVector3();</span>
543
+ const btb = <span class="cstat-no" title="statement not covered" >new Ammo.btVector3();</span>
544
+ const btc = <span class="cstat-no" title="statement not covered" >new Ammo.btVector3();</span>
545
+ const triMesh = <span class="cstat-no" title="statement not covered" >new Ammo.btTriangleMesh(true, false);</span>
546
+ &nbsp;
547
+ <span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i &lt; vertices.length; i++) {</span>
548
+ const components = <span class="cstat-no" title="statement not covered" >vertices[i];</span>
549
+ const index = <span class="cstat-no" title="statement not covered" >indexes[i] ? indexes[i] : null;</span>
550
+ const matrix = <span class="cstat-no" title="statement not covered" >Array.from(matrices[i]);</span>
551
+ &nbsp;
552
+ <span class="cstat-no" title="statement not covered" > if (index) {</span>
553
+ <span class="cstat-no" title="statement not covered" > for (let j = <span class="cstat-no" title="statement not covered" >0;</span> j &lt; index.length; j += 3) {</span>
554
+ const ai = <span class="cstat-no" title="statement not covered" >index[j] * 3;</span>
555
+ const bi = <span class="cstat-no" title="statement not covered" >index[j + 1] * 3;</span>
556
+ const ci = <span class="cstat-no" title="statement not covered" >index[j + 2] * 3;</span>
557
+ &nbsp;
558
+ const va = <span class="cstat-no" title="statement not covered" >applyMatrix4ToVector3({ x: components[ai], y: components[ai + 1], z: components[ai + 2] }, matrix);</span>
559
+ const vb = <span class="cstat-no" title="statement not covered" >applyMatrix4ToVector3({ x: components[bi], y: components[bi + 1], z: components[bi + 2] }, matrix);</span>
560
+ const vc = <span class="cstat-no" title="statement not covered" >applyMatrix4ToVector3({ x: components[ci], y: components[ci + 1], z: components[ci + 2] }, matrix);</span>
561
+ &nbsp;
562
+ <span class="cstat-no" title="statement not covered" > bta.setValue(va.x, va.y, va.z);</span>
563
+ <span class="cstat-no" title="statement not covered" > btb.setValue(vb.x, vb.y, vb.z);</span>
564
+ <span class="cstat-no" title="statement not covered" > btc.setValue(vc.x, vc.y, vc.z);</span>
565
+ <span class="cstat-no" title="statement not covered" > triMesh.addTriangle(bta, btb, btc, false);</span>
566
+ }
567
+ } else {
568
+ <span class="cstat-no" title="statement not covered" > for (let j = <span class="cstat-no" title="statement not covered" >0;</span> j &lt; components.length; j += 9) {</span>
569
+ const va = <span class="cstat-no" title="statement not covered" >applyMatrix4ToVector3({ x: components[j + 0], y: components[j + 1], z: components[j + 2] }, matrix);</span>
570
+ const vb = <span class="cstat-no" title="statement not covered" >applyMatrix4ToVector3({ x: components[j + 3], y: components[j + 4], z: components[j + 5] }, matrix);</span>
571
+ const vc = <span class="cstat-no" title="statement not covered" >applyMatrix4ToVector3({ x: components[j + 6], y: components[j + 7], z: components[j + 8] }, matrix);</span>
572
+ &nbsp;
573
+ <span class="cstat-no" title="statement not covered" > bta.setValue(va.x, va.y, va.z);</span>
574
+ <span class="cstat-no" title="statement not covered" > btb.setValue(vb.x, vb.y, vb.z);</span>
575
+ <span class="cstat-no" title="statement not covered" > btc.setValue(vc.x, vc.y, vc.z);</span>
576
+ <span class="cstat-no" title="statement not covered" > triMesh.addTriangle(bta, btb, btc, false);</span>
577
+ }
578
+ }
579
+ }
580
+ &nbsp;
581
+ const localScale = <span class="cstat-no" title="statement not covered" >new Ammo.btVector3(scale.x, scale.y, scale.z);</span>
582
+ <span class="cstat-no" title="statement not covered" > triMesh.setScaling(localScale);</span>
583
+ <span class="cstat-no" title="statement not covered" > Ammo.destroy(localScale);</span>
584
+ &nbsp;
585
+ const collisionShape = <span class="cstat-no" title="statement not covered" >new Ammo.btBvhTriangleMeshShape(triMesh, true, true);</span>
586
+ <span class="cstat-no" title="statement not covered" > collisionShape.resources = [triMesh];</span>
587
+ &nbsp;
588
+ <span class="cstat-no" title="statement not covered" > Ammo.destroy(bta);</span>
589
+ <span class="cstat-no" title="statement not covered" > Ammo.destroy(btb);</span>
590
+ <span class="cstat-no" title="statement not covered" > Ammo.destroy(btc);</span>
591
+ &nbsp;
592
+ const body = <span class="cstat-no" title="statement not covered" >createRigidBody(collisionShape, { uuid, position, quaternion, mass, friction });</span>
593
+ <span class="cstat-no" title="statement not covered" > world.addElement({ uuid, body, type: TYPES.MESH, state: DEFAULT_RIGIDBODY_STATE });</span>
594
+ }
595
+ &nbsp;
596
+ export const addBox = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(d</span>ata) =&gt; {</span>
597
+ const { uuid, width, length, height, position, quaternion, mass = <span class="branch-0 cbranch-no" title="branch not covered" >0,</span> friction = <span class="branch-0 cbranch-no" title="branch not covered" >2 </span>} = <span class="cstat-no" title="statement not covered" >data;</span>
598
+ &nbsp;
599
+ const geometry = <span class="cstat-no" title="statement not covered" >new Ammo.btBoxShape(new Ammo.btVector3(width * 0.5, height * 0.5, length * 0.5));</span>
600
+ const body = <span class="cstat-no" title="statement not covered" >createRigidBody(geometry, { uuid, position, quaternion, mass, friction });</span>
601
+ &nbsp;
602
+ <span class="cstat-no" title="statement not covered" > world.addElement({ uuid, body, type: TYPES.BOX, state: DEFAULT_RIGIDBODY_STATE });</span>
603
+ };
604
+ &nbsp;
605
+ export const addSphere = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >da</span>ta =&gt; {</span>
606
+ const { uuid, radius, position, quaternion, mass = <span class="branch-0 cbranch-no" title="branch not covered" >0,</span> friction = <span class="branch-0 cbranch-no" title="branch not covered" >2 </span>} = <span class="cstat-no" title="statement not covered" >data;</span>
607
+ &nbsp;
608
+ const geometry = <span class="cstat-no" title="statement not covered" >new Ammo.btSphereShape(radius);</span>
609
+ const body = <span class="cstat-no" title="statement not covered" >createRigidBody(geometry, { uuid, position, quaternion, mass, friction });</span>
610
+ &nbsp;
611
+ <span class="cstat-no" title="statement not covered" > world.addElement({ uuid, body, type: TYPES.SPHERE, state: DEFAULT_RIGIDBODY_STATE });</span>
612
+ };
613
+ &nbsp;
614
+ export const setLinearVelocity = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(d</span>ata) =&gt; {</span>
615
+ const { uuid, velocity = <span class="branch-0 cbranch-no" title="branch not covered" >DEFAULT_LINEAR_VELOCITY </span>} = <span class="cstat-no" title="statement not covered" >data;</span>
616
+ const { body } = <span class="cstat-no" title="statement not covered" >world.getElement(uuid);</span>
617
+ const motionState = <span class="cstat-no" title="statement not covered" >body.getMotionState();</span>
618
+ &nbsp;
619
+ <span class="cstat-no" title="statement not covered" > if (motionState) {</span>
620
+ const linearVelocity = <span class="cstat-no" title="statement not covered" >new Ammo.btVector3(velocity.x, velocity.y, velocity.z);</span>
621
+ <span class="cstat-no" title="statement not covered" > body.setLinearVelocity(linearVelocity);</span>
622
+ <span class="cstat-no" title="statement not covered" > Ammo.destroy(linearVelocity);</span>
623
+ }
624
+ };
625
+ &nbsp;
626
+ export const setPosition = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >da</span>ta =&gt; {</span>
627
+ const { uuid, position } = <span class="cstat-no" title="statement not covered" >data;</span>
628
+ const { body } = <span class="cstat-no" title="statement not covered" >world.getElement(uuid);</span>
629
+ &nbsp;
630
+ const transform = <span class="cstat-no" title="statement not covered" >new Ammo.btTransform();</span>
631
+ &nbsp;
632
+ <span class="cstat-no" title="statement not covered" > body.getWorldTransform(transform);</span>
633
+ <span class="cstat-no" title="statement not covered" > transform.setOrigin(new Ammo.btVector3(position.x, position.y, position.z ));</span>
634
+ &nbsp;
635
+ <span class="cstat-no" title="statement not covered" > body.setWorldTransform(transform);</span>
636
+ }
637
+ &nbsp;
638
+ export const resetElement = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >da</span>ta =&gt; {</span>
639
+ const { uuid, position, quaternion } = <span class="cstat-no" title="statement not covered" >data;</span>
640
+ const { body } = <span class="cstat-no" title="statement not covered" >world.getElement(uuid);</span>
641
+ &nbsp;
642
+ const transform = <span class="cstat-no" title="statement not covered" >new Ammo.btTransform();</span>
643
+ &nbsp;
644
+ <span class="cstat-no" title="statement not covered" > body.getWorldTransform(transform);</span>
645
+ <span class="cstat-no" title="statement not covered" > transform.setOrigin(new Ammo.btVector3(position.x, position.y, position.z ));</span>
646
+ <span class="cstat-no" title="statement not covered" > transform.setRotation(new Ammo.btQuaternion(quaternion.x, quaternion.y, quaternion.z, quaternion.w));</span>
647
+ &nbsp;
648
+ <span class="cstat-no" title="statement not covered" > body.setWorldTransform(transform);</span>
649
+ }
650
+ &nbsp;
651
+ export const applyImpuse = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >({</span> uuid, impulse = <span class="branch-0 cbranch-no" title="branch not covered" >DEFAULT_IMPULSE </span>}) =&gt; {</span>
652
+ const { body } = <span class="cstat-no" title="statement not covered" >world.getElement(uuid);</span>
653
+ const motionState = <span class="cstat-no" title="statement not covered" >body.getMotionState();</span>
654
+ &nbsp;
655
+ <span class="cstat-no" title="statement not covered" > if (motionState) {</span>
656
+ const impulseVector = <span class="cstat-no" title="statement not covered" >new Ammo.btVector3(impulse.x, impulse.y, impulse.z);</span>
657
+ <span class="cstat-no" title="statement not covered" > body.applyCentralImpulse(impulseVector);</span>
658
+ <span class="cstat-no" title="statement not covered" > Ammo.destroy(impulseVector);</span>
659
+ }
660
+ }
661
+ &nbsp;
662
+ export const handleElementUpdate = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >({</span> body, uuid, state = <span class="branch-0 cbranch-no" title="branch not covered" >DEFAULT_RIGIDBODY_STATE </span>}, dt) =&gt; {</span>
663
+ const motionState = <span class="cstat-no" title="statement not covered" >body.getMotionState();</span>
664
+ &nbsp;
665
+ <span class="cstat-no" title="statement not covered" > if (motionState) {</span>
666
+ const transform = <span class="cstat-no" title="statement not covered" >new Ammo.btTransform();</span>
667
+ &nbsp;
668
+ <span class="cstat-no" title="statement not covered" > motionState.getWorldTransform(transform);</span>
669
+ let origin = <span class="cstat-no" title="statement not covered" >transform.getOrigin();</span>
670
+ let rotation = <span class="cstat-no" title="statement not covered" >transform.getRotation();</span>
671
+ &nbsp;
672
+ <span class="cstat-no" title="statement not covered" > dispatcher.sendBodyUpdate(uuid, origin, rotation, dt);</span>
673
+ <span class="cstat-no" title="statement not covered" > Ammo.destroy(transform);</span>
674
+ }
675
+ }</pre></td></tr></table></pre>
676
+
677
+ <div class='push'></div><!-- for sticky footer -->
678
+ </div><!-- /wrapper -->
679
+ <div class='footer quiet pad2 space-top1 center small'>
680
+ Code coverage generated by
681
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
682
+ at 2026-03-02T17:28:15.675Z
683
+ </div>
684
+ <script src="../../prettify.js"></script>
685
+ <script>
686
+ window.onload = function () {
687
+ prettyPrint();
688
+ };
689
+ </script>
690
+ <script src="../../sorter.js"></script>
691
+ <script src="../../block-navigation.js"></script>
692
+ </body>
693
+ </html>
694
+