mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-09-14 14:59:43 -05:00
deploy: 2f7ea945bb
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -362,8 +362,14 @@
|
||||
<span class="linenos">31</span><span class="w"> </span><span class="c1">/// <typeparam name="T"></typeparam></span>
|
||||
<span class="linenos">32</span><span class="w"> </span><span class="c1">/// <returns></returns></span>
|
||||
<span class="linenos">33</span><span class="w"> </span><span class="n">Task</span><span class="p"><</span><span class="n">T</span><span class="p">></span><span class="w"> </span><span class="n">Run</span><span class="p"><</span><span class="n">T</span><span class="p">>(</span><span class="n">Func</span><span class="p"><</span><span class="n">T</span><span class="p">></span><span class="w"> </span><span class="n">action</span><span class="p">);</span><span class="w"></span>
|
||||
<span class="linenos">34</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">35</span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">34</span>
|
||||
<span class="linenos">35</span><span class="w"> </span><span class="c1">/// <summary></span>
|
||||
<span class="linenos">36</span><span class="w"> </span><span class="c1">/// 指定した時間が経過している場合のみ、NextFrame() を使って1フレーム待つ</span>
|
||||
<span class="linenos">37</span><span class="w"> </span><span class="c1">/// </summary></span>
|
||||
<span class="linenos">38</span><span class="w"> </span><span class="c1">/// <returns>タイムアウト時はNextFrame()を呼び出す。そうではない場合、Task.CompletedTaskを返す</returns></span>
|
||||
<span class="linenos">39</span><span class="w"> </span><span class="n">Task</span><span class="w"> </span><span class="nf">NextFrameIfTimedOut</span><span class="p">();</span><span class="w"></span>
|
||||
<span class="linenos">40</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">41</span><span class="p">}</span><span class="w"></span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
@@ -403,8 +409,10 @@
|
||||
<span class="linenos">23</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">24</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">Task</span><span class="p">.</span><span class="n">FromResult</span><span class="p">(</span><span class="n">action</span><span class="p">());</span><span class="w"></span>
|
||||
<span class="linenos">25</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">26</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">27</span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">26</span>
|
||||
<span class="linenos">27</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="n">Task</span><span class="w"> </span><span class="nf">NextFrameIfTimedOut</span><span class="p">()</span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="n">NextFrame</span><span class="p">();</span><span class="w"></span>
|
||||
<span class="linenos">28</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">29</span><span class="p">}</span><span class="w"></span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -426,30 +434,55 @@
|
||||
<span class="linenos">10</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="k">sealed</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">RuntimeOnlyAwaitCaller</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">IAwaitCaller</span><span class="w"></span>
|
||||
<span class="linenos">11</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">12</span><span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="k">readonly</span><span class="w"> </span><span class="n">NextFrameTaskScheduler</span><span class="w"> </span><span class="n">_scheduler</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">13</span>
|
||||
<span class="linenos">14</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nf">RuntimeOnlyAwaitCaller</span><span class="p">()</span><span class="w"></span>
|
||||
<span class="linenos">15</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">16</span><span class="w"> </span><span class="n">_scheduler</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">NextFrameTaskScheduler</span><span class="p">();</span><span class="w"></span>
|
||||
<span class="linenos">17</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">18</span>
|
||||
<span class="linenos">19</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="n">Task</span><span class="w"> </span><span class="nf">NextFrame</span><span class="p">()</span><span class="w"></span>
|
||||
<span class="linenos">20</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">21</span><span class="w"> </span><span class="kt">var</span><span class="w"> </span><span class="n">tcs</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">TaskCompletionSource</span><span class="p"><</span><span class="kt">object</span><span class="p">>();</span><span class="w"></span>
|
||||
<span class="linenos">22</span><span class="w"> </span><span class="n">_scheduler</span><span class="p">.</span><span class="n">Enqueue</span><span class="p">(()</span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="n">tcs</span><span class="p">.</span><span class="n">SetResult</span><span class="p">(</span><span class="k">default</span><span class="p">));</span><span class="w"></span>
|
||||
<span class="linenos">23</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">tcs</span><span class="p">.</span><span class="n">Task</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">24</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">25</span>
|
||||
<span class="linenos">26</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="n">Task</span><span class="w"> </span><span class="nf">Run</span><span class="p">(</span><span class="n">Action</span><span class="w"> </span><span class="n">action</span><span class="p">)</span><span class="w"></span>
|
||||
<span class="linenos">27</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">28</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">Task</span><span class="p">.</span><span class="n">Run</span><span class="p">(</span><span class="n">action</span><span class="p">);</span><span class="w"></span>
|
||||
<span class="linenos">29</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">30</span>
|
||||
<span class="linenos">31</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="n">Task</span><span class="p"><</span><span class="n">T</span><span class="p">></span><span class="w"> </span><span class="n">Run</span><span class="p"><</span><span class="n">T</span><span class="p">>(</span><span class="n">Func</span><span class="p"><</span><span class="n">T</span><span class="p">></span><span class="w"> </span><span class="n">action</span><span class="p">)</span><span class="w"></span>
|
||||
<span class="linenos">32</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">33</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">Task</span><span class="p">.</span><span class="n">Run</span><span class="p">(</span><span class="n">action</span><span class="p">);</span><span class="w"></span>
|
||||
<span class="linenos">34</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">35</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">36</span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">13</span><span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="k">readonly</span><span class="w"> </span><span class="kt">float</span><span class="w"> </span><span class="n">_timeOutInSeconds</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">14</span><span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="kt">float</span><span class="w"> </span><span class="n">_lastTimeoutBaseTime</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">15</span>
|
||||
<span class="linenos">16</span><span class="w"> </span><span class="c1">/// <summary></span>
|
||||
<span class="linenos">17</span><span class="w"> </span><span class="c1">/// タイムアウト指定可能なコンストラクタ</span>
|
||||
<span class="linenos">18</span><span class="w"> </span><span class="c1">/// </summary></span>
|
||||
<span class="linenos">19</span><span class="w"> </span><span class="c1">/// <param name="timeOutInSeconds">NextFrameIfTimedOutがタイムアウトと見なす時間(秒単位)</param></span>
|
||||
<span class="linenos">20</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nf">RuntimeOnlyAwaitCaller</span><span class="p">(</span><span class="kt">float</span><span class="w"> </span><span class="n">timeOutInSeconds</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="m">1f</span><span class="w"> </span><span class="p">/</span><span class="w"> </span><span class="m">1000f</span><span class="p">)</span><span class="w"></span>
|
||||
<span class="linenos">21</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">22</span><span class="w"> </span><span class="n">_scheduler</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">NextFrameTaskScheduler</span><span class="p">();</span><span class="w"></span>
|
||||
<span class="linenos">23</span><span class="w"> </span><span class="n">_timeOutInSeconds</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">timeOutInSeconds</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">24</span><span class="w"> </span><span class="n">ResetLastTimeoutBaseTime</span><span class="p">();</span><span class="w"></span>
|
||||
<span class="linenos">25</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">26</span>
|
||||
<span class="linenos">27</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="n">Task</span><span class="w"> </span><span class="nf">NextFrame</span><span class="p">()</span><span class="w"></span>
|
||||
<span class="linenos">28</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">29</span><span class="w"> </span><span class="n">ResetLastTimeoutBaseTime</span><span class="p">();</span><span class="w"></span>
|
||||
<span class="linenos">30</span><span class="w"> </span><span class="kt">var</span><span class="w"> </span><span class="n">tcs</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">TaskCompletionSource</span><span class="p"><</span><span class="kt">object</span><span class="p">>();</span><span class="w"></span>
|
||||
<span class="linenos">31</span><span class="w"> </span><span class="n">_scheduler</span><span class="p">.</span><span class="n">Enqueue</span><span class="p">(()</span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="n">tcs</span><span class="p">.</span><span class="n">SetResult</span><span class="p">(</span><span class="k">default</span><span class="p">));</span><span class="w"></span>
|
||||
<span class="linenos">32</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">tcs</span><span class="p">.</span><span class="n">Task</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">33</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">34</span>
|
||||
<span class="linenos">35</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="n">Task</span><span class="w"> </span><span class="nf">Run</span><span class="p">(</span><span class="n">Action</span><span class="w"> </span><span class="n">action</span><span class="p">)</span><span class="w"></span>
|
||||
<span class="linenos">36</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">37</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">Task</span><span class="p">.</span><span class="n">Run</span><span class="p">(</span><span class="n">action</span><span class="p">);</span><span class="w"></span>
|
||||
<span class="linenos">38</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">39</span>
|
||||
<span class="linenos">40</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="n">Task</span><span class="p"><</span><span class="n">T</span><span class="p">></span><span class="w"> </span><span class="n">Run</span><span class="p"><</span><span class="n">T</span><span class="p">>(</span><span class="n">Func</span><span class="p"><</span><span class="n">T</span><span class="p">></span><span class="w"> </span><span class="n">action</span><span class="p">)</span><span class="w"></span>
|
||||
<span class="linenos">41</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">42</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">Task</span><span class="p">.</span><span class="n">Run</span><span class="p">(</span><span class="n">action</span><span class="p">);</span><span class="w"></span>
|
||||
<span class="linenos">43</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">44</span>
|
||||
<span class="linenos">45</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="n">Task</span><span class="w"> </span><span class="nf">NextFrameIfTimedOut</span><span class="p">()</span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="n">CheckTimeout</span><span class="p">()</span><span class="w"> </span><span class="p">?</span><span class="w"> </span><span class="n">NextFrame</span><span class="p">()</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">Task</span><span class="p">.</span><span class="n">CompletedTask</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">46</span>
|
||||
<span class="linenos">47</span><span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="k">void</span><span class="w"> </span><span class="nf">ResetLastTimeoutBaseTime</span><span class="p">()</span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="n">_lastTimeoutBaseTime</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="m">0f</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">48</span>
|
||||
<span class="linenos">49</span><span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">LastTimeoutBaseTimeNeedsReset</span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="n">_lastTimeoutBaseTime</span><span class="w"> </span><span class="p">==</span><span class="w"> </span><span class="m">0f</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">50</span>
|
||||
<span class="linenos">51</span><span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="nf">CheckTimeout</span><span class="p">()</span><span class="w"></span>
|
||||
<span class="linenos">52</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">53</span><span class="w"> </span><span class="kt">float</span><span class="w"> </span><span class="n">t</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">UnityEngine</span><span class="p">.</span><span class="n">Time</span><span class="p">.</span><span class="n">realtimeSinceStartup</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">54</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">LastTimeoutBaseTimeNeedsReset</span><span class="p">)</span><span class="w"></span>
|
||||
<span class="linenos">55</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">56</span><span class="w"> </span><span class="n">_lastTimeoutBaseTime</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">t</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">57</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">58</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">(</span><span class="n">t</span><span class="w"> </span><span class="p">-</span><span class="w"> </span><span class="n">_lastTimeoutBaseTime</span><span class="p">)</span><span class="w"> </span><span class="p">>=</span><span class="w"> </span><span class="n">_timeOutInSeconds</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">59</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">60</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">61</span><span class="p">}</span><span class="w"></span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
@@ -361,8 +361,14 @@
|
||||
<span class="linenos">31</span><span class="w"> </span><span class="c1">/// <typeparam name="T"></typeparam></span>
|
||||
<span class="linenos">32</span><span class="w"> </span><span class="c1">/// <returns></returns></span>
|
||||
<span class="linenos">33</span><span class="w"> </span><span class="n">Task</span><span class="p"><</span><span class="n">T</span><span class="p">></span><span class="w"> </span><span class="n">Run</span><span class="p"><</span><span class="n">T</span><span class="p">>(</span><span class="n">Func</span><span class="p"><</span><span class="n">T</span><span class="p">></span><span class="w"> </span><span class="n">action</span><span class="p">);</span><span class="w"></span>
|
||||
<span class="linenos">34</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">35</span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">34</span>
|
||||
<span class="linenos">35</span><span class="w"> </span><span class="c1">/// <summary></span>
|
||||
<span class="linenos">36</span><span class="w"> </span><span class="c1">/// 指定した時間が経過している場合のみ、NextFrame() を使って1フレーム待つ</span>
|
||||
<span class="linenos">37</span><span class="w"> </span><span class="c1">/// </summary></span>
|
||||
<span class="linenos">38</span><span class="w"> </span><span class="c1">/// <returns>タイムアウト時はNextFrame()を呼び出す。そうではない場合、Task.CompletedTaskを返す</returns></span>
|
||||
<span class="linenos">39</span><span class="w"> </span><span class="n">Task</span><span class="w"> </span><span class="nf">NextFrameIfTimedOut</span><span class="p">();</span><span class="w"></span>
|
||||
<span class="linenos">40</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">41</span><span class="p">}</span><span class="w"></span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
@@ -402,8 +408,10 @@
|
||||
<span class="linenos">23</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">24</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">Task</span><span class="p">.</span><span class="n">FromResult</span><span class="p">(</span><span class="n">action</span><span class="p">());</span><span class="w"></span>
|
||||
<span class="linenos">25</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">26</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">27</span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">26</span>
|
||||
<span class="linenos">27</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="n">Task</span><span class="w"> </span><span class="nf">NextFrameIfTimedOut</span><span class="p">()</span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="n">NextFrame</span><span class="p">();</span><span class="w"></span>
|
||||
<span class="linenos">28</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">29</span><span class="p">}</span><span class="w"></span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -425,30 +433,55 @@
|
||||
<span class="linenos">10</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="k">sealed</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">RuntimeOnlyAwaitCaller</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">IAwaitCaller</span><span class="w"></span>
|
||||
<span class="linenos">11</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">12</span><span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="k">readonly</span><span class="w"> </span><span class="n">NextFrameTaskScheduler</span><span class="w"> </span><span class="n">_scheduler</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">13</span>
|
||||
<span class="linenos">14</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nf">RuntimeOnlyAwaitCaller</span><span class="p">()</span><span class="w"></span>
|
||||
<span class="linenos">15</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">16</span><span class="w"> </span><span class="n">_scheduler</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">NextFrameTaskScheduler</span><span class="p">();</span><span class="w"></span>
|
||||
<span class="linenos">17</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">18</span>
|
||||
<span class="linenos">19</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="n">Task</span><span class="w"> </span><span class="nf">NextFrame</span><span class="p">()</span><span class="w"></span>
|
||||
<span class="linenos">20</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">21</span><span class="w"> </span><span class="kt">var</span><span class="w"> </span><span class="n">tcs</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">TaskCompletionSource</span><span class="p"><</span><span class="kt">object</span><span class="p">>();</span><span class="w"></span>
|
||||
<span class="linenos">22</span><span class="w"> </span><span class="n">_scheduler</span><span class="p">.</span><span class="n">Enqueue</span><span class="p">(()</span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="n">tcs</span><span class="p">.</span><span class="n">SetResult</span><span class="p">(</span><span class="k">default</span><span class="p">));</span><span class="w"></span>
|
||||
<span class="linenos">23</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">tcs</span><span class="p">.</span><span class="n">Task</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">24</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">25</span>
|
||||
<span class="linenos">26</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="n">Task</span><span class="w"> </span><span class="nf">Run</span><span class="p">(</span><span class="n">Action</span><span class="w"> </span><span class="n">action</span><span class="p">)</span><span class="w"></span>
|
||||
<span class="linenos">27</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">28</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">Task</span><span class="p">.</span><span class="n">Run</span><span class="p">(</span><span class="n">action</span><span class="p">);</span><span class="w"></span>
|
||||
<span class="linenos">29</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">30</span>
|
||||
<span class="linenos">31</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="n">Task</span><span class="p"><</span><span class="n">T</span><span class="p">></span><span class="w"> </span><span class="n">Run</span><span class="p"><</span><span class="n">T</span><span class="p">>(</span><span class="n">Func</span><span class="p"><</span><span class="n">T</span><span class="p">></span><span class="w"> </span><span class="n">action</span><span class="p">)</span><span class="w"></span>
|
||||
<span class="linenos">32</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">33</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">Task</span><span class="p">.</span><span class="n">Run</span><span class="p">(</span><span class="n">action</span><span class="p">);</span><span class="w"></span>
|
||||
<span class="linenos">34</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">35</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">36</span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">13</span><span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="k">readonly</span><span class="w"> </span><span class="kt">float</span><span class="w"> </span><span class="n">_timeOutInSeconds</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">14</span><span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="kt">float</span><span class="w"> </span><span class="n">_lastTimeoutBaseTime</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">15</span>
|
||||
<span class="linenos">16</span><span class="w"> </span><span class="c1">/// <summary></span>
|
||||
<span class="linenos">17</span><span class="w"> </span><span class="c1">/// タイムアウト指定可能なコンストラクタ</span>
|
||||
<span class="linenos">18</span><span class="w"> </span><span class="c1">/// </summary></span>
|
||||
<span class="linenos">19</span><span class="w"> </span><span class="c1">/// <param name="timeOutInSeconds">NextFrameIfTimedOutがタイムアウトと見なす時間(秒単位)</param></span>
|
||||
<span class="linenos">20</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nf">RuntimeOnlyAwaitCaller</span><span class="p">(</span><span class="kt">float</span><span class="w"> </span><span class="n">timeOutInSeconds</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="m">1f</span><span class="w"> </span><span class="p">/</span><span class="w"> </span><span class="m">1000f</span><span class="p">)</span><span class="w"></span>
|
||||
<span class="linenos">21</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">22</span><span class="w"> </span><span class="n">_scheduler</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">NextFrameTaskScheduler</span><span class="p">();</span><span class="w"></span>
|
||||
<span class="linenos">23</span><span class="w"> </span><span class="n">_timeOutInSeconds</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">timeOutInSeconds</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">24</span><span class="w"> </span><span class="n">ResetLastTimeoutBaseTime</span><span class="p">();</span><span class="w"></span>
|
||||
<span class="linenos">25</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">26</span>
|
||||
<span class="linenos">27</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="n">Task</span><span class="w"> </span><span class="nf">NextFrame</span><span class="p">()</span><span class="w"></span>
|
||||
<span class="linenos">28</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">29</span><span class="w"> </span><span class="n">ResetLastTimeoutBaseTime</span><span class="p">();</span><span class="w"></span>
|
||||
<span class="linenos">30</span><span class="w"> </span><span class="kt">var</span><span class="w"> </span><span class="n">tcs</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">TaskCompletionSource</span><span class="p"><</span><span class="kt">object</span><span class="p">>();</span><span class="w"></span>
|
||||
<span class="linenos">31</span><span class="w"> </span><span class="n">_scheduler</span><span class="p">.</span><span class="n">Enqueue</span><span class="p">(()</span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="n">tcs</span><span class="p">.</span><span class="n">SetResult</span><span class="p">(</span><span class="k">default</span><span class="p">));</span><span class="w"></span>
|
||||
<span class="linenos">32</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">tcs</span><span class="p">.</span><span class="n">Task</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">33</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">34</span>
|
||||
<span class="linenos">35</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="n">Task</span><span class="w"> </span><span class="nf">Run</span><span class="p">(</span><span class="n">Action</span><span class="w"> </span><span class="n">action</span><span class="p">)</span><span class="w"></span>
|
||||
<span class="linenos">36</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">37</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">Task</span><span class="p">.</span><span class="n">Run</span><span class="p">(</span><span class="n">action</span><span class="p">);</span><span class="w"></span>
|
||||
<span class="linenos">38</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">39</span>
|
||||
<span class="linenos">40</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="n">Task</span><span class="p"><</span><span class="n">T</span><span class="p">></span><span class="w"> </span><span class="n">Run</span><span class="p"><</span><span class="n">T</span><span class="p">>(</span><span class="n">Func</span><span class="p"><</span><span class="n">T</span><span class="p">></span><span class="w"> </span><span class="n">action</span><span class="p">)</span><span class="w"></span>
|
||||
<span class="linenos">41</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">42</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">Task</span><span class="p">.</span><span class="n">Run</span><span class="p">(</span><span class="n">action</span><span class="p">);</span><span class="w"></span>
|
||||
<span class="linenos">43</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">44</span>
|
||||
<span class="linenos">45</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="n">Task</span><span class="w"> </span><span class="nf">NextFrameIfTimedOut</span><span class="p">()</span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="n">CheckTimeout</span><span class="p">()</span><span class="w"> </span><span class="p">?</span><span class="w"> </span><span class="n">NextFrame</span><span class="p">()</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">Task</span><span class="p">.</span><span class="n">CompletedTask</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">46</span>
|
||||
<span class="linenos">47</span><span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="k">void</span><span class="w"> </span><span class="nf">ResetLastTimeoutBaseTime</span><span class="p">()</span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="n">_lastTimeoutBaseTime</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="m">0f</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">48</span>
|
||||
<span class="linenos">49</span><span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">LastTimeoutBaseTimeNeedsReset</span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="n">_lastTimeoutBaseTime</span><span class="w"> </span><span class="p">==</span><span class="w"> </span><span class="m">0f</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">50</span>
|
||||
<span class="linenos">51</span><span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="nf">CheckTimeout</span><span class="p">()</span><span class="w"></span>
|
||||
<span class="linenos">52</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">53</span><span class="w"> </span><span class="kt">float</span><span class="w"> </span><span class="n">t</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">UnityEngine</span><span class="p">.</span><span class="n">Time</span><span class="p">.</span><span class="n">realtimeSinceStartup</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">54</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">LastTimeoutBaseTimeNeedsReset</span><span class="p">)</span><span class="w"></span>
|
||||
<span class="linenos">55</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="linenos">56</span><span class="w"> </span><span class="n">_lastTimeoutBaseTime</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">t</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">57</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">58</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">(</span><span class="n">t</span><span class="w"> </span><span class="p">-</span><span class="w"> </span><span class="n">_lastTimeoutBaseTime</span><span class="p">)</span><span class="w"> </span><span class="p">>=</span><span class="w"> </span><span class="n">_timeOutInSeconds</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="linenos">59</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">60</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="linenos">61</span><span class="p">}</span><span class="w"></span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user