220 lines
38 KiB
HTML
220 lines
38 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<meta http-equiv="X-UA-Compatible" content="IE=EDGE,chrome=1" />
|
||
<link href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAn1BMVEUAAADCAAAAAAA3yDfUAAA3yDfUAAA8PDzr6+sAAAD4+Pg3yDeQkJDTAADt7e3V1dU3yDdCQkIAAADbMTHUAABBykHUAAA2yDY3yDfr6+vTAAB3diDR0dGYcHDUAAAjhiPSAAA3yDeuAADUAAA3yDf////OCALg9+BLzktBuzRelimzKgv87+/dNTVflSn1/PWz6rO126g5yDlYniy0KgwjJ0TyAAAAI3RSTlMABAj0WD6rJcsN7X1HzMqUJyYW+/X08+bltqSeaVRBOy0cE+citBEAAADBSURBVDjLlczXEoIwFIThJPYGiL0XiL3r+z+bBOJs9JDMuLffP8v+Gxfc6aIyDQVjQcnqnvRDEQwLJYtXpZT+YhDHKIjLbS+OUeT4TjkKi6OwOArq+yeKXD9uDqQQbcOjyCy0e6bTojZSftX+U6zUQ7OuittDu1k0WHqRFfdXQijgjKfF6ZwAikvmKD6OQjmKWUcDigkztm5FZN05nMON9ZcoinlBmTNnAUdBnRbUUbgdBZwWbkcBpwXcVsBtxfjb31j1QB5qeebOAAAAAElFTkSuQmCC" rel="icon" type="image/x-icon" />
|
||
<title>CounterDrone.Core.Algorithms.GaussianPuffDispersion - Coverage Report</title>
|
||
<link rel="stylesheet" type="text/css" href="report.css" />
|
||
</head><body><div class="container"><div class="containerleft">
|
||
<h1><a href="index.html" class="back"><</a> Summary</h1>
|
||
<div class="card-group">
|
||
<div class="card">
|
||
<div class="card-header">Information</div>
|
||
<div class="card-body">
|
||
<div class="table">
|
||
<table>
|
||
<tr>
|
||
<th>Class:</th>
|
||
<td class="limit-width " title="CounterDrone.Core.Algorithms.GaussianPuffDispersion">CounterDrone.Core.Algorithms.GaussianPuffDispersion</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Assembly:</th>
|
||
<td class="limit-width " title="CounterDrone.Core">CounterDrone.Core</td>
|
||
</tr>
|
||
<tr>
|
||
<th>File(s):</th>
|
||
<td class="overflow-wrap"><a href="#CUsersTellmeappsCounterDroneBackendsrcCounterDroneCoreAlgorithmsGaussianPuffDispersioncs" class="navigatetohash">C:\Users\Tellme\apps\CounterDroneBackend\src\CounterDrone.Core\Algorithms\GaussianPuffDispersion.cs</a></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card-group">
|
||
<div class="card">
|
||
<div class="card-header">Line coverage</div>
|
||
<div class="card-body">
|
||
<div class="large cardpercentagebar cardpercentagebar0">100%</div>
|
||
<div class="table">
|
||
<table>
|
||
<tr>
|
||
<th>Covered lines:</th>
|
||
<td class="limit-width right" title="38">38</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Uncovered lines:</th>
|
||
<td class="limit-width right" title="0">0</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Coverable lines:</th>
|
||
<td class="limit-width right" title="38">38</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Total lines:</th>
|
||
<td class="limit-width right" title="73">73</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Line coverage:</th>
|
||
<td class="limit-width right" title="38 of 38">100%</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card">
|
||
<div class="card-header">Branch coverage</div>
|
||
<div class="card-body">
|
||
<div class="large cardpercentagebar cardpercentagebar0">100%</div>
|
||
<div class="table">
|
||
<table>
|
||
<tr>
|
||
<th>Covered branches:</th>
|
||
<td class="limit-width right" title="8">8</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Total branches:</th>
|
||
<td class="limit-width right" title="8">8</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Branch coverage:</th>
|
||
<td class="limit-width right" title="8 of 8">100%</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card">
|
||
<div class="card-header">Method coverage</div>
|
||
<div class="card-body">
|
||
<div class="center">
|
||
<p>Feature is only available for sponsors</p>
|
||
<a class="pro-button" href="https://reportgenerator.io/pro" target="_blank">Upgrade to PRO version</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h1>Metrics</h1>
|
||
<div class="table-responsive">
|
||
<table class="overview table-fixed">
|
||
<colgroup>
|
||
<col class="column-min-200" />
|
||
<col class="column105" />
|
||
<col class="column105" />
|
||
<col class="column105" />
|
||
<col class="column105" />
|
||
</colgroup>
|
||
<thead><tr><th>Method</th><th>Branch coverage <a href="https://en.wikipedia.org/wiki/Code_coverage" target="_blank"><i class="icon-info-circled"></i></a></th><th>Crap Score <a href="https://googletesting.blogspot.de/2011/02/this-code-is-crap.html" target="_blank"><i class="icon-info-circled"></i></a></th><th>Cyclomatic complexity <a href="https://en.wikipedia.org/wiki/Cyclomatic_complexity" target="_blank"><i class="icon-info-circled"></i></a></th><th>Line coverage <a href="https://en.wikipedia.org/wiki/Code_coverage" target="_blank"><i class="icon-info-circled"></i></a></th></tr></thead>
|
||
<tbody>
|
||
<tr><td title=".ctor()"><a href="#file0_line9" class="navigatetohash">.ctor()</a></td><td>100%</td><td>1</td><td>1</td><td>100%</td></tr>
|
||
<tr><td title="get_Center()"><a href="#file0_line15" class="navigatetohash">get_Center()</a></td><td>100%</td><td>1</td><td>1</td><td>100%</td></tr>
|
||
<tr><td title="get_Radius()"><a href="#file0_line16" class="navigatetohash">get_Radius()</a></td><td>100%</td><td>1</td><td>1</td><td>100%</td></tr>
|
||
<tr><td title="get_CoreDensity()"><a href="#file0_line17" class="navigatetohash">get_CoreDensity()</a></td><td>100%</td><td>1</td><td>1</td><td>100%</td></tr>
|
||
<tr><td title="get_EffectiveRadius()"><a href="#file0_line18" class="navigatetohash">get_EffectiveRadius()</a></td><td>100%</td><td>1</td><td>1</td><td>100%</td></tr>
|
||
<tr><td title="get_Particles()"><a href="#file0_line19" class="navigatetohash">get_Particles()</a></td><td>100%</td><td>1</td><td>1</td><td>100%</td></tr>
|
||
<tr><td title="get_IsDissipated()"><a href="#file0_line20" class="navigatetohash">get_IsDissipated()</a></td><td>100%</td><td>1</td><td>1</td><td>100%</td></tr>
|
||
<tr><td title="Initialize(CounterDrone.Core.Models.AmmunitionSpec,CounterDrone.Core.Models.CombatScene,CounterDrone.Core.Algorithms.Vector3,System.Single)"><a href="#file0_line23" class="navigatetohash">Initialize(...)</a></td><td>100%</td><td>1</td><td>1</td><td>100%</td></tr>
|
||
<tr><td title="Tick(System.Single,System.Single,CounterDrone.Core.Models.WindDirection)"><a href="#file0_line37" class="navigatetohash">Tick(...)</a></td><td>100%</td><td>8</td><td>8</td><td>100%</td></tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<h1>File(s)</h1>
|
||
<h2 id="CUsersTellmeappsCounterDroneBackendsrcCounterDroneCoreAlgorithmsGaussianPuffDispersioncs">C:\Users\Tellme\apps\CounterDroneBackend\src\CounterDrone.Core\Algorithms\GaussianPuffDispersion.cs</h2>
|
||
<div class="table-responsive">
|
||
<table class="lineAnalysis">
|
||
<thead><tr><th></th><th>#</th><th>Line</th><th></th><th>Line coverage</th></tr></thead>
|
||
<tbody>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line1"></a><code>1</code></td><td></td><td class="lightgray"><code>using System;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line2"></a><code>2</code></td><td></td><td class="lightgray"><code>using CounterDrone.Core.Models;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line3"></a><code>3</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line4"></a><code>4</code></td><td></td><td class="lightgray"><code>namespace CounterDrone.Core.Algorithms</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line5"></a><code>5</code></td><td></td><td class="lightgray"><code>{</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line6"></a><code>6</code></td><td></td><td class="lightgray"><code> /// <summary>高斯烟团扩散模型 — 简化实现</summary></code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line7"></a><code>7</code></td><td></td><td class="lightgray"><code> public class GaussianPuffDispersion : ICloudDispersionModel</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line8"></a><code>8</code></td><td></td><td class="lightgray"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Covered (19 visits)" data-coverage="{'AllTestMethods': {'VC': '19', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">19</td><td class="rightmargin right"><a id="file0_line9"></a><code>9</code></td><td></td><td class="lightgreen"><code> private AmmunitionSpec _ammo = null!;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line10"></a><code>10</code></td><td></td><td class="lightgray"><code> private float _elapsed;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line11"></a><code>11</code></td><td></td><td class="lightgray"><code> private float _currentRadius;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line12"></a><code>12</code></td><td></td><td class="lightgray"><code> private Vector3 _center;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line13"></a><code>13</code></td><td></td><td class="lightgray"><code> private Vector3 _windVelocity;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line14"></a><code>14</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="coverableline" title="Covered (2186 visits)" data-coverage="{'AllTestMethods': {'VC': '2186', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">2186</td><td class="rightmargin right"><a id="file0_line15"></a><code>15</code></td><td></td><td class="lightgreen"><code> public Vector3 Center => _center;</code></td></tr>
|
||
<tr class="coverableline" title="Covered (367 visits)" data-coverage="{'AllTestMethods': {'VC': '367', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">367</td><td class="rightmargin right"><a id="file0_line16"></a><code>16</code></td><td></td><td class="lightgreen"><code> public float Radius => _currentRadius;</code></td></tr>
|
||
<tr class="coverableline" title="Covered (785 visits)" data-coverage="{'AllTestMethods': {'VC': '785', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">785</td><td class="rightmargin right"><a id="file0_line17"></a><code>17</code></td><td></td><td class="lightgreen"><code> public float CoreDensity { get; private set; }</code></td></tr>
|
||
<tr class="coverableline" title="Covered (364 visits)" data-coverage="{'AllTestMethods': {'VC': '364', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">364</td><td class="rightmargin right"><a id="file0_line18"></a><code>18</code></td><td></td><td class="lightgreen"><code> public float EffectiveRadius => _currentRadius; // 简化:有效半径 = 物理半径</code></td></tr>
|
||
<tr class="coverableline" title="Covered (1128 visits)" data-coverage="{'AllTestMethods': {'VC': '1128', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">1128</td><td class="rightmargin right"><a id="file0_line19"></a><code>19</code></td><td></td><td class="lightgreen"><code> public ParticleParams Particles { get; } = new();</code></td></tr>
|
||
<tr class="coverableline" title="Covered (1122 visits)" data-coverage="{'AllTestMethods': {'VC': '1122', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">1122</td><td class="rightmargin right"><a id="file0_line20"></a><code>20</code></td><td></td><td class="lightgreen"><code> public bool IsDissipated { get; private set; }</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line21"></a><code>21</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line22"></a><code>22</code></td><td></td><td class="lightgray"><code> public void Initialize(AmmunitionSpec ammo, CombatScene env, Vector3 releasePos, float releaseTime)</code></td></tr>
|
||
<tr class="coverableline" title="Covered (18 visits)" data-coverage="{'AllTestMethods': {'VC': '18', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">18</td><td class="rightmargin right"><a id="file0_line23"></a><code>23</code></td><td></td><td class="lightgreen"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Covered (18 visits)" data-coverage="{'AllTestMethods': {'VC': '18', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">18</td><td class="rightmargin right"><a id="file0_line24"></a><code>24</code></td><td></td><td class="lightgreen"><code> _ammo = ammo;</code></td></tr>
|
||
<tr class="coverableline" title="Covered (18 visits)" data-coverage="{'AllTestMethods': {'VC': '18', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">18</td><td class="rightmargin right"><a id="file0_line25"></a><code>25</code></td><td></td><td class="lightgreen"><code> _elapsed = 0f;</code></td></tr>
|
||
<tr class="coverableline" title="Covered (18 visits)" data-coverage="{'AllTestMethods': {'VC': '18', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">18</td><td class="rightmargin right"><a id="file0_line26"></a><code>26</code></td><td></td><td class="lightgreen"><code> _currentRadius = (float)ammo.InitialRadius;</code></td></tr>
|
||
<tr class="coverableline" title="Covered (18 visits)" data-coverage="{'AllTestMethods': {'VC': '18', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">18</td><td class="rightmargin right"><a id="file0_line27"></a><code>27</code></td><td></td><td class="lightgreen"><code> _center = releasePos;</code></td></tr>
|
||
<tr class="coverableline" title="Covered (18 visits)" data-coverage="{'AllTestMethods': {'VC': '18', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">18</td><td class="rightmargin right"><a id="file0_line28"></a><code>28</code></td><td></td><td class="lightgreen"><code> CoreDensity = (float)ammo.CoreDensity;</code></td></tr>
|
||
<tr class="coverableline" title="Covered (18 visits)" data-coverage="{'AllTestMethods': {'VC': '18', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">18</td><td class="rightmargin right"><a id="file0_line29"></a><code>29</code></td><td></td><td class="lightgreen"><code> IsDissipated = false;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line30"></a><code>30</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line31"></a><code>31</code></td><td></td><td class="lightgray"><code> // 风速 → 速度矢量</code></td></tr>
|
||
<tr class="coverableline" title="Covered (18 visits)" data-coverage="{'AllTestMethods': {'VC': '18', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">18</td><td class="rightmargin right"><a id="file0_line32"></a><code>32</code></td><td></td><td class="lightgreen"><code> var (vx, vy, vz) = Kinematics.WindToVector((WindDirection)env.WindDirection, (float)env.WindSpeed);</code></td></tr>
|
||
<tr class="coverableline" title="Covered (18 visits)" data-coverage="{'AllTestMethods': {'VC': '18', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">18</td><td class="rightmargin right"><a id="file0_line33"></a><code>33</code></td><td></td><td class="lightgreen"><code> _windVelocity = new Algorithms.Vector3(vx, vy, vz);</code></td></tr>
|
||
<tr class="coverableline" title="Covered (18 visits)" data-coverage="{'AllTestMethods': {'VC': '18', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">18</td><td class="rightmargin right"><a id="file0_line34"></a><code>34</code></td><td></td><td class="lightgreen"><code> }</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line35"></a><code>35</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line36"></a><code>36</code></td><td></td><td class="lightgray"><code> public void Tick(float deltaTime, float windSpeed, WindDirection windDir)</code></td></tr>
|
||
<tr class="coverableline" title="Covered (370 visits)" data-coverage="{'AllTestMethods': {'VC': '370', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">370</td><td class="rightmargin right"><a id="file0_line37"></a><code>37</code></td><td></td><td class="lightgreen"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Covered (370 visits, 2 of 2 branches are covered)" data-coverage="{'AllTestMethods': {'VC': '370', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">370</td><td class="rightmargin right"><a id="file0_line38"></a><code>38</code></td><td class="percentagebar percentagebar100"><i class="icon-fork"></i></td><td class="lightgreen"><code> if (IsDissipated) return;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line39"></a><code>39</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="coverableline" title="Covered (370 visits)" data-coverage="{'AllTestMethods': {'VC': '370', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">370</td><td class="rightmargin right"><a id="file0_line40"></a><code>40</code></td><td></td><td class="lightgreen"><code> _elapsed += deltaTime;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line41"></a><code>41</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line42"></a><code>42</code></td><td></td><td class="lightgray"><code> // 更新风速(允许动态变化)</code></td></tr>
|
||
<tr class="coverableline" title="Covered (370 visits)" data-coverage="{'AllTestMethods': {'VC': '370', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">370</td><td class="rightmargin right"><a id="file0_line43"></a><code>43</code></td><td></td><td class="lightgreen"><code> var (vx, vy, vz) = Kinematics.WindToVector(windDir, windSpeed);</code></td></tr>
|
||
<tr class="coverableline" title="Covered (370 visits)" data-coverage="{'AllTestMethods': {'VC': '370', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">370</td><td class="rightmargin right"><a id="file0_line44"></a><code>44</code></td><td></td><td class="lightgreen"><code> _windVelocity = new Algorithms.Vector3(vx, vy, vz);</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line45"></a><code>45</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line46"></a><code>46</code></td><td></td><td class="lightgray"><code> // 半径膨胀:初始半径 + 扩散速率 × 时间</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line47"></a><code>47</code></td><td></td><td class="lightgray"><code> // 加入大气稳定度因子(简化:1.0)</code></td></tr>
|
||
<tr class="coverableline" title="Covered (370 visits)" data-coverage="{'AllTestMethods': {'VC': '370', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">370</td><td class="rightmargin right"><a id="file0_line48"></a><code>48</code></td><td></td><td class="lightgreen"><code> var dispersionRate = (float)(_ammo.DispersionRateBase * 1.0f);</code></td></tr>
|
||
<tr class="coverableline" title="Covered (370 visits)" data-coverage="{'AllTestMethods': {'VC': '370', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">370</td><td class="rightmargin right"><a id="file0_line49"></a><code>49</code></td><td></td><td class="lightgreen"><code> _currentRadius = (float)_ammo.InitialRadius + dispersionRate * _elapsed;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line50"></a><code>50</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line51"></a><code>51</code></td><td></td><td class="lightgray"><code> // 中心随风漂移</code></td></tr>
|
||
<tr class="coverableline" title="Covered (370 visits)" data-coverage="{'AllTestMethods': {'VC': '370', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">370</td><td class="rightmargin right"><a id="file0_line52"></a><code>52</code></td><td></td><td class="lightgreen"><code> _center += _windVelocity * deltaTime;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line53"></a><code>53</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line54"></a><code>54</code></td><td></td><td class="lightgray"><code> // 密度衰减:核心密度 × (初始半径 / 当前半径)³</code></td></tr>
|
||
<tr class="coverableline" title="Covered (370 visits, 2 of 2 branches are covered)" data-coverage="{'AllTestMethods': {'VC': '370', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">370</td><td class="rightmargin right"><a id="file0_line55"></a><code>55</code></td><td class="percentagebar percentagebar100"><i class="icon-fork"></i></td><td class="lightgreen"><code> if (_currentRadius > 0.001f)</code></td></tr>
|
||
<tr class="coverableline" title="Covered (370 visits)" data-coverage="{'AllTestMethods': {'VC': '370', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">370</td><td class="rightmargin right"><a id="file0_line56"></a><code>56</code></td><td></td><td class="lightgreen"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Covered (370 visits)" data-coverage="{'AllTestMethods': {'VC': '370', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">370</td><td class="rightmargin right"><a id="file0_line57"></a><code>57</code></td><td></td><td class="lightgreen"><code> var volumeRatio = (float)System.Math.Pow((float)_ammo.InitialRadius / _currentRadius, 3);</code></td></tr>
|
||
<tr class="coverableline" title="Covered (370 visits)" data-coverage="{'AllTestMethods': {'VC': '370', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">370</td><td class="rightmargin right"><a id="file0_line58"></a><code>58</code></td><td></td><td class="lightgreen"><code> CoreDensity = (float)_ammo.CoreDensity * volumeRatio;</code></td></tr>
|
||
<tr class="coverableline" title="Covered (370 visits)" data-coverage="{'AllTestMethods': {'VC': '370', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">370</td><td class="rightmargin right"><a id="file0_line59"></a><code>59</code></td><td></td><td class="lightgreen"><code> }</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line60"></a><code>60</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line61"></a><code>61</code></td><td></td><td class="lightgray"><code> // 更新粒子参数</code></td></tr>
|
||
<tr class="coverableline" title="Covered (370 visits)" data-coverage="{'AllTestMethods': {'VC': '370', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">370</td><td class="rightmargin right"><a id="file0_line62"></a><code>62</code></td><td></td><td class="lightgreen"><code> Particles.Opacity = System.Math.Max(0.1f, CoreDensity / (float)_ammo.CoreDensity);</code></td></tr>
|
||
<tr class="coverableline" title="Covered (370 visits)" data-coverage="{'AllTestMethods': {'VC': '370', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">370</td><td class="rightmargin right"><a id="file0_line63"></a><code>63</code></td><td></td><td class="lightgreen"><code> Particles.SizeMultiplier = _currentRadius / (float)_ammo.InitialRadius;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line64"></a><code>64</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line65"></a><code>65</code></td><td></td><td class="lightgray"><code> // 消散条件</code></td></tr>
|
||
<tr class="coverableline" title="Covered (370 visits, 4 of 4 branches are covered)" data-coverage="{'AllTestMethods': {'VC': '370', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">370</td><td class="rightmargin right"><a id="file0_line66"></a><code>66</code></td><td class="percentagebar percentagebar100"><i class="icon-fork"></i></td><td class="lightgreen"><code> if (_elapsed >= (float)_ammo.MaxDuration || _currentRadius >= (float)_ammo.MaxRadius)</code></td></tr>
|
||
<tr class="coverableline" title="Covered (3 visits)" data-coverage="{'AllTestMethods': {'VC': '3', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">3</td><td class="rightmargin right"><a id="file0_line67"></a><code>67</code></td><td></td><td class="lightgreen"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Covered (3 visits)" data-coverage="{'AllTestMethods': {'VC': '3', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">3</td><td class="rightmargin right"><a id="file0_line68"></a><code>68</code></td><td></td><td class="lightgreen"><code> IsDissipated = true;</code></td></tr>
|
||
<tr class="coverableline" title="Covered (3 visits)" data-coverage="{'AllTestMethods': {'VC': '3', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">3</td><td class="rightmargin right"><a id="file0_line69"></a><code>69</code></td><td></td><td class="lightgreen"><code> Particles.Opacity = 0f;</code></td></tr>
|
||
<tr class="coverableline" title="Covered (3 visits)" data-coverage="{'AllTestMethods': {'VC': '3', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">3</td><td class="rightmargin right"><a id="file0_line70"></a><code>70</code></td><td></td><td class="lightgreen"><code> }</code></td></tr>
|
||
<tr class="coverableline" title="Covered (370 visits)" data-coverage="{'AllTestMethods': {'VC': '370', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">370</td><td class="rightmargin right"><a id="file0_line71"></a><code>71</code></td><td></td><td class="lightgreen"><code> }</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line72"></a><code>72</code></td><td></td><td class="lightgray"><code> }</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line73"></a><code>73</code></td><td></td><td class="lightgray"><code>}</code></td></tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<div class="footer">Generated by: ReportGenerator 5.5.10.0<br />2026/6/11 - 16:35:36<br /><a href="https://github.com/danielpalme/ReportGenerator">GitHub</a> | <a href="https://reportgenerator.io">reportgenerator.io</a></div></div>
|
||
<div class="containerright">
|
||
<div class="containerrightfixed">
|
||
<h1>Methods/Properties</h1>
|
||
<a href="#file0_line9" class="navigatetohash percentagebar percentagebar100" title="Line coverage: 100% - .ctor()"><i class="icon-cube"></i>.ctor()</a><br />
|
||
<a href="#file0_line15" class="navigatetohash percentagebar percentagebar100" title="Line coverage: 100% - get_Center()"><i class="icon-wrench"></i>get_Center()</a><br />
|
||
<a href="#file0_line16" class="navigatetohash percentagebar percentagebar100" title="Line coverage: 100% - get_Radius()"><i class="icon-wrench"></i>get_Radius()</a><br />
|
||
<a href="#file0_line17" class="navigatetohash percentagebar percentagebar100" title="Line coverage: 100% - get_CoreDensity()"><i class="icon-wrench"></i>get_CoreDensity()</a><br />
|
||
<a href="#file0_line18" class="navigatetohash percentagebar percentagebar100" title="Line coverage: 100% - get_EffectiveRadius()"><i class="icon-wrench"></i>get_EffectiveRadius()</a><br />
|
||
<a href="#file0_line19" class="navigatetohash percentagebar percentagebar100" title="Line coverage: 100% - get_Particles()"><i class="icon-wrench"></i>get_Particles()</a><br />
|
||
<a href="#file0_line20" class="navigatetohash percentagebar percentagebar100" title="Line coverage: 100% - get_IsDissipated()"><i class="icon-wrench"></i>get_IsDissipated()</a><br />
|
||
<a href="#file0_line23" class="navigatetohash percentagebar percentagebar100" title="Line coverage: 100% - Initialize(CounterDrone.Core.Models.AmmunitionSpec,CounterDrone.Core.Models.CombatScene,CounterDrone.Core.Algorithms.Vector3,System.Single)"><i class="icon-cube"></i>Initialize(CounterDrone.Core.Models.AmmunitionSpec,CounterDrone.Core.Models.CombatScene,CounterDrone.Core.Algorithms.Vector3,System.Single)</a><br />
|
||
<a href="#file0_line37" class="navigatetohash percentagebar percentagebar100" title="Line coverage: 100% - Tick(System.Single,System.Single,CounterDrone.Core.Models.WindDirection)"><i class="icon-cube"></i>Tick(System.Single,System.Single,CounterDrone.Core.Models.WindDirection)</a><br />
|
||
<br/></div>
|
||
</div></div>
|
||
<script type="text/javascript" src="class.js"></script>
|
||
</body></html> |