Files
dl/document/html/dl__ui__scene_8h_source.html
2026-09-16 14:07:40 +08:00

267 lines
38 KiB
HTML
Vendored
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>dl: D:/dl/dl/ui/dl_ui_scene.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">dl
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.13.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','搜索',false);
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){ initResizable(false); });
/* @license-end */
</script>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_17297ffb27ce571941f5fb5008f01a1f.html">dl</a></li><li class="navelem"><a class="el" href="dir_4abfab93245d32d76245ca9307c069b4.html">ui</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">dl_ui_scene.h</div></div>
</div><!--header-->
<div class="contents">
<a href="dl__ui__scene_8h.html">浏览该文件的文档.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#ifndef DL_DISABLE_RENDER</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include &lt;unordered_map&gt;</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &quot;<a class="code" href="dl__log_8h.html">io/dl_log.h</a>&quot;</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#include &quot;<a class="code" href="dl__range__any_8h.html">base/dl_range_any.h</a>&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="preprocessor">#include &quot;<a class="code" href="dl__ui__panel_8h.html">ui/dl_ui_panel.h</a>&quot;</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> </div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacedl_1_1_u_i.html">dl::UI</a></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span>{</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span></div>
<div class="foldopen" id="foldopen00025" data-start="{" data-end="};">
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"><a class="line" href="classdl_1_1_u_i_1_1_scene.html"> 25</a></span><span class="keyword">class </span><a class="code hl_function" href="classdl_1_1_u_i_1_1_scene.html#a7ca1c3a078c3a0555b117e0eddc8db49">Scene</a></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span>{</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"><a class="line" href="classdl_1_1_u_i_1_1_scene.html#a284464b0561a6f2915f04b0245b987f0"> 27</a></span> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code hl_friend" href="classdl_1_1_u_i_1_1_scene.html#a284464b0561a6f2915f04b0245b987f0">SceneManager</a>;</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"><a class="line" href="classdl_1_1_u_i_1_1_scene.html#a7ca1c3a078c3a0555b117e0eddc8db49"> 29</a></span> <a class="code hl_function" href="classdl_1_1_u_i_1_1_scene.html#a7ca1c3a078c3a0555b117e0eddc8db49">Scene</a>();</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"><a class="line" href="classdl_1_1_u_i_1_1_scene.html#a877ccdae8ac3441edf1a0c4907370365"> 30</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classdl_1_1_u_i_1_1_scene.html#a877ccdae8ac3441edf1a0c4907370365">~Scene</a>();</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"><a class="line" href="classdl_1_1_u_i_1_1_scene.html#af6f6190daf420f459da40778e2dd7569"> 31</a></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classdl_1_1_u_i_1_1_scene.html#af6f6190daf420f459da40778e2dd7569">Update</a>() {};</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"><a class="line" href="classdl_1_1_u_i_1_1_scene.html#a40538eca976dace368147d45599b3698"> 32</a></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classdl_1_1_u_i_1_1_scene.html#a40538eca976dace368147d45599b3698">Render</a>() {};</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="classdl_1_1_u_i_1_1_scene.html#a381decf53ac23bc001695648d2fa92c9"> 35</a></span> <a class="code hl_class" href="classdl_1_1_u_i_1_1_panel.html">UI::Panel</a>* <a class="code hl_function" href="classdl_1_1_u_i_1_1_scene.html#a381decf53ac23bc001695648d2fa92c9">CreatePanel</a>(std::string_view name);</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"><a class="line" href="classdl_1_1_u_i_1_1_scene.html#aad10d1d74f5d7946eb981dfd80815518"> 37</a></span> std::string <a class="code hl_function" href="classdl_1_1_u_i_1_1_scene.html#aad10d1d74f5d7946eb981dfd80815518">GetName</a>() { <span class="keywordflow">return</span> <a class="code hl_variable" href="classdl_1_1_u_i_1_1_scene.html#a6633131c653a72e014c1e4a3363e706b">_root</a>-&gt;GetName(); }</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="classdl_1_1_u_i_1_1_scene.html#a3fb4e2a33a447f9693760cb64f159809"> 39</a></span> <a class="code hl_class" href="classdl_1_1_u_i_1_1_panel.html">UI::Panel</a>* <a class="code hl_function" href="classdl_1_1_u_i_1_1_scene.html#a3fb4e2a33a447f9693760cb64f159809">GetPanelRoot</a>() { <span class="keywordflow">return</span> <a class="code hl_variable" href="classdl_1_1_u_i_1_1_scene.html#a6633131c653a72e014c1e4a3363e706b">_root</a>; }</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// void SetVisibleOnly(UI::Panel* panel)</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// {</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// auto iter = _allPanel.find(panel-&gt;GetName());</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// if(iter == _allPanel.end())</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// {</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// log_err(&quot;not find panel: {}&quot;, panel-&gt;GetName());</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// return;</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// }</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// for(auto&amp; p : _allPanel)</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// {</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// panel-&gt;SetVisible(p.second == panel);</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// }</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// }</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> </div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"><a class="line" href="classdl_1_1_u_i_1_1_scene.html#ae8b83f12c8810a0b6805f7c1c2348e4f"> 55</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classdl_1_1_u_i_1_1_scene.html#ae8b83f12c8810a0b6805f7c1c2348e4f">_update</a>();</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"><a class="line" href="classdl_1_1_u_i_1_1_scene.html#a5bf1ebb3b16dd675bf6dc75f8b972216"> 56</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classdl_1_1_u_i_1_1_scene.html#a5bf1ebb3b16dd675bf6dc75f8b972216">_render</a>();</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="keyword">protected</span>:</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"><a class="line" href="classdl_1_1_u_i_1_1_scene.html#a6633131c653a72e014c1e4a3363e706b"> 58</a></span> <a class="code hl_class" href="classdl_1_1_u_i_1_1_panel.html">UI::Panel</a>* <a class="code hl_variable" href="classdl_1_1_u_i_1_1_scene.html#a6633131c653a72e014c1e4a3363e706b">_root</a>;</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span>};</div>
</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span></div>
<div class="foldopen" id="foldopen00062" data-start="{" data-end="};">
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="classdl_1_1_u_i_1_1_scene_manager.html"> 62</a></span><span class="keyword">class </span><a class="code hl_class" href="classdl_1_1_u_i_1_1_scene_manager.html">SceneManager</a></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span>{</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="keyword">public</span>:</div>
<div class="foldopen" id="foldopen00071" data-start="{" data-end="}">
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="classdl_1_1_u_i_1_1_scene_manager.html#a806b48529919ab424355753a40088415"> 71</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classdl_1_1_u_i_1_1_scene_manager.html#a806b48529919ab424355753a40088415">Add</a>(std::string_view name, <a class="code hl_class" href="classdl_1_1_u_i_1_1_scene.html">Scene</a>* scene)</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> {</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> scene-&gt;<a class="code hl_variable" href="classdl_1_1_u_i_1_1_scene.html#a6633131c653a72e014c1e4a3363e706b">_root</a>-&gt;<a class="code hl_function" href="classdl_1_1_u_i_1_1_panel.html#a3608194081df740755ee1ee743d37fc8">SetName</a>(name);</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> _vecSceneAdd[std::string{ name }] = scene;</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> }</div>
</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span></div>
<div class="foldopen" id="foldopen00080" data-start="{" data-end="}">
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"><a class="line" href="classdl_1_1_u_i_1_1_scene_manager.html#a2263ab0d43a0a05d0d96a3312f1a582b"> 80</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classdl_1_1_u_i_1_1_scene_manager.html#a2263ab0d43a0a05d0d96a3312f1a582b">Del</a>(std::string_view name)</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> {</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="namespacedl_1_1_any.html#aade322b75b02d876efc8f7ab70fdb2b2">Any::Equal</a>(_vecSceneDelete, name))</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> {</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <a class="code hl_define" href="dl__log_8h.html#abc86a6b34614cb6484cdf935d9350abd">log_err</a>(<span class="stringliteral">&quot;重复删除Scene{}&quot;</span>, name);</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> }</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> _vecSceneDelete.push_back(std::string{ name });</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> }</div>
</div>
<div class="foldopen" id="foldopen00089" data-start="{" data-end="}">
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"><a class="line" href="classdl_1_1_u_i_1_1_scene_manager.html#a433718b7f318086c7e77168f8bcd16aa"> 89</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classdl_1_1_u_i_1_1_scene_manager.html#a433718b7f318086c7e77168f8bcd16aa">Del</a>(<a class="code hl_class" href="classdl_1_1_u_i_1_1_scene.html">Scene</a>* scene)</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> {</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <a class="code hl_function" href="classdl_1_1_u_i_1_1_scene_manager.html#a2263ab0d43a0a05d0d96a3312f1a582b">Del</a>(scene-&gt;<a class="code hl_function" href="classdl_1_1_u_i_1_1_scene.html#aad10d1d74f5d7946eb981dfd80815518">GetName</a>());</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> }</div>
</div>
<div class="foldopen" id="foldopen00093" data-start="{" data-end="}">
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"><a class="line" href="classdl_1_1_u_i_1_1_scene_manager.html#a226aaf998ecea37e7671ec13e737f424"> 93</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classdl_1_1_u_i_1_1_scene_manager.html#a226aaf998ecea37e7671ec13e737f424">_update_pre</a>()</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> {</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="comment">// 处理上一帧的删除</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; name : _vecSceneDelete)</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> {</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="keyword">auto</span> iter = _allScene.find(name);</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="keywordflow">if</span> (iter == _allScene.end())</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> {</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <a class="code hl_define" href="dl__log_8h.html#abc86a6b34614cb6484cdf935d9350abd">log_err</a>(<span class="stringliteral">&quot;移除时未找到Scene{}&quot;</span>, name);</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> }</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <span class="keyword">delete</span> iter-&gt;second;</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> _allScene.erase(iter);</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> }</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> _vecSceneDelete.clear();</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> </div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="comment">// 处理上一帧的添加</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; [name, scene] : _vecSceneAdd)</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> {</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="comment">// 不存在,直接添加</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="keyword">auto</span> iter = _allScene.find(name);</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keywordflow">if</span> (iter == _allScene.end())</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> {</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> _allScene.insert({ name, scene });</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> }</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="keywordflow">if</span> (iter-&gt;second == scene)</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> {</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <a class="code hl_define" href="dl__log_8h.html#a04af09851c431d178f16b24fa1aac1e9">log_warn</a>(<span class="stringliteral">&quot;场景重复添加:{}&quot;</span>, name);</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> }</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> iter-&gt;second = scene;</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> }</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> _vecSceneAdd.clear();</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> }</div>
</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> </div>
<div class="foldopen" id="foldopen00129" data-start="{" data-end="}">
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"><a class="line" href="classdl_1_1_u_i_1_1_scene_manager.html#ab423fe37561b4724849e045ddb550b93"> 129</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classdl_1_1_u_i_1_1_scene_manager.html#ab423fe37561b4724849e045ddb550b93">_update</a>()</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> {</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; iter : _allScene)</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> iter.second-&gt;_update();</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> }</div>
</div>
<div class="foldopen" id="foldopen00134" data-start="{" data-end="}">
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"><a class="line" href="classdl_1_1_u_i_1_1_scene_manager.html#a199c67122f537e410b0d7703367e8a34"> 134</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classdl_1_1_u_i_1_1_scene_manager.html#a199c67122f537e410b0d7703367e8a34">_render</a>()</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> {</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; iter : _allScene)</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> iter.second-&gt;_render();</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> }</div>
</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> </div>
<div class="foldopen" id="foldopen00140" data-start="{" data-end="}">
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"><a class="line" href="classdl_1_1_u_i_1_1_scene_manager.html#a58f1731d8b939493dd4d52f417574919"> 140</a></span> <a class="code hl_class" href="classdl_1_1_u_i_1_1_scene.html">Scene</a>* <a class="code hl_function" href="classdl_1_1_u_i_1_1_scene_manager.html#a58f1731d8b939493dd4d52f417574919">Get</a>(<span class="keyword">const</span> std::string&amp; name)</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> {</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="keywordflow">if</span> (_allScene.find(name) != _allScene.end())</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <span class="keywordflow">return</span> _allScene[name];</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> }</div>
</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> </div>
<div class="foldopen" id="foldopen00147" data-start="{" data-end="}">
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"><a class="line" href="classdl_1_1_u_i_1_1_scene_manager.html#a3ff07e0bdaf29e5990464d74b20226f9"> 147</a></span> <a class="code hl_function" href="classdl_1_1_u_i_1_1_scene_manager.html#a3ff07e0bdaf29e5990464d74b20226f9">~SceneManager</a>()</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> {</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; iter : _allScene)</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> {</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <span class="keyword">delete</span> iter.second;</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> }</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> }</div>
</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> std::unordered_map&lt;std::string, Scene*&gt; _allScene;</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="comment">// 添加与移除均需在末尾处理</span></div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> std::unordered_map&lt;std::string, Scene*&gt; _vecSceneAdd;</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> std::vector&lt;std::string&gt; _vecSceneDelete;</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> </div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span>};</div>
</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> </div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span>}</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> </div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacedl.html">dl</a></div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span>{</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="keyword">extern</span> UI::SceneManager* <a class="code hl_variable" href="namespacedl.html#a5ba4bd419f10358df01b9f6301966b41">g_scene</a>;</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span>}</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> </div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span><span class="preprocessor">#endif</span></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_panel_html"><div class="ttname"><a href="classdl_1_1_u_i_1_1_panel.html">dl::UI::Panel</a></div><div class="ttdoc">UI面板</div><div class="ttdef"><b>定义</b> <a href="dl__ui__panel_8h_source.html#l00064">dl_ui_panel.h:65</a></div></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_panel_html_a3608194081df740755ee1ee743d37fc8"><div class="ttname"><a href="classdl_1_1_u_i_1_1_panel.html#a3608194081df740755ee1ee743d37fc8">dl::UI::Panel::SetName</a></div><div class="ttdeci">void SetName(std::string_view name)</div><div class="ttdoc">设置名字</div><div class="ttdef"><b>定义</b> <a href="dl__ui__panel_8h_source.html#l00244">dl_ui_panel.h:244</a></div></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_scene_html"><div class="ttname"><a href="classdl_1_1_u_i_1_1_scene.html">dl::UI::Scene</a></div><div class="ttdoc">场景</div><div class="ttdef"><b>定义</b> <a href="#l00025">dl_ui_scene.h:26</a></div></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_scene_html_a284464b0561a6f2915f04b0245b987f0"><div class="ttname"><a href="classdl_1_1_u_i_1_1_scene.html#a284464b0561a6f2915f04b0245b987f0">dl::UI::Scene::SceneManager</a></div><div class="ttdeci">friend class SceneManager</div><div class="ttdef"><b>定义</b> <a href="#l00027">dl_ui_scene.h:27</a></div></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_scene_html_a381decf53ac23bc001695648d2fa92c9"><div class="ttname"><a href="classdl_1_1_u_i_1_1_scene.html#a381decf53ac23bc001695648d2fa92c9">dl::UI::Scene::CreatePanel</a></div><div class="ttdeci">UI::Panel * CreatePanel(std::string_view name)</div><div class="ttdoc">创建子 Panel</div></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_scene_html_a3fb4e2a33a447f9693760cb64f159809"><div class="ttname"><a href="classdl_1_1_u_i_1_1_scene.html#a3fb4e2a33a447f9693760cb64f159809">dl::UI::Scene::GetPanelRoot</a></div><div class="ttdeci">UI::Panel * GetPanelRoot()</div><div class="ttdoc">返回根Panel</div><div class="ttdef"><b>定义</b> <a href="#l00039">dl_ui_scene.h:39</a></div></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_scene_html_a40538eca976dace368147d45599b3698"><div class="ttname"><a href="classdl_1_1_u_i_1_1_scene.html#a40538eca976dace368147d45599b3698">dl::UI::Scene::Render</a></div><div class="ttdeci">virtual void Render()</div><div class="ttdef"><b>定义</b> <a href="#l00032">dl_ui_scene.h:32</a></div></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_scene_html_a5bf1ebb3b16dd675bf6dc75f8b972216"><div class="ttname"><a href="classdl_1_1_u_i_1_1_scene.html#a5bf1ebb3b16dd675bf6dc75f8b972216">dl::UI::Scene::_render</a></div><div class="ttdeci">void _render()</div></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_scene_html_a6633131c653a72e014c1e4a3363e706b"><div class="ttname"><a href="classdl_1_1_u_i_1_1_scene.html#a6633131c653a72e014c1e4a3363e706b">dl::UI::Scene::_root</a></div><div class="ttdeci">UI::Panel * _root</div><div class="ttdef"><b>定义</b> <a href="#l00058">dl_ui_scene.h:58</a></div></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_scene_html_a7ca1c3a078c3a0555b117e0eddc8db49"><div class="ttname"><a href="classdl_1_1_u_i_1_1_scene.html#a7ca1c3a078c3a0555b117e0eddc8db49">dl::UI::Scene::Scene</a></div><div class="ttdeci">Scene()</div></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_scene_html_a877ccdae8ac3441edf1a0c4907370365"><div class="ttname"><a href="classdl_1_1_u_i_1_1_scene.html#a877ccdae8ac3441edf1a0c4907370365">dl::UI::Scene::~Scene</a></div><div class="ttdeci">virtual ~Scene()</div></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_scene_html_aad10d1d74f5d7946eb981dfd80815518"><div class="ttname"><a href="classdl_1_1_u_i_1_1_scene.html#aad10d1d74f5d7946eb981dfd80815518">dl::UI::Scene::GetName</a></div><div class="ttdeci">std::string GetName()</div><div class="ttdoc">返回设定的名字(添加到场景管理器时设置)</div><div class="ttdef"><b>定义</b> <a href="#l00037">dl_ui_scene.h:37</a></div></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_scene_html_ae8b83f12c8810a0b6805f7c1c2348e4f"><div class="ttname"><a href="classdl_1_1_u_i_1_1_scene.html#ae8b83f12c8810a0b6805f7c1c2348e4f">dl::UI::Scene::_update</a></div><div class="ttdeci">void _update()</div><div class="ttdoc">设置唯一可见 Panel</div></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_scene_html_af6f6190daf420f459da40778e2dd7569"><div class="ttname"><a href="classdl_1_1_u_i_1_1_scene.html#af6f6190daf420f459da40778e2dd7569">dl::UI::Scene::Update</a></div><div class="ttdeci">virtual void Update()</div><div class="ttdef"><b>定义</b> <a href="#l00031">dl_ui_scene.h:31</a></div></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_scene_manager_html"><div class="ttname"><a href="classdl_1_1_u_i_1_1_scene_manager.html">dl::UI::SceneManager</a></div><div class="ttdoc">场景</div><div class="ttdef"><b>定义</b> <a href="#l00062">dl_ui_scene.h:63</a></div></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_scene_manager_html_a199c67122f537e410b0d7703367e8a34"><div class="ttname"><a href="classdl_1_1_u_i_1_1_scene_manager.html#a199c67122f537e410b0d7703367e8a34">dl::UI::SceneManager::_render</a></div><div class="ttdeci">void _render()</div><div class="ttdef"><b>定义</b> <a href="#l00134">dl_ui_scene.h:134</a></div></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_scene_manager_html_a2263ab0d43a0a05d0d96a3312f1a582b"><div class="ttname"><a href="classdl_1_1_u_i_1_1_scene_manager.html#a2263ab0d43a0a05d0d96a3312f1a582b">dl::UI::SceneManager::Del</a></div><div class="ttdeci">void Del(std::string_view name)</div><div class="ttdoc">删除场景</div><div class="ttdef"><b>定义</b> <a href="#l00080">dl_ui_scene.h:80</a></div></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_scene_manager_html_a226aaf998ecea37e7671ec13e737f424"><div class="ttname"><a href="classdl_1_1_u_i_1_1_scene_manager.html#a226aaf998ecea37e7671ec13e737f424">dl::UI::SceneManager::_update_pre</a></div><div class="ttdeci">void _update_pre()</div><div class="ttdef"><b>定义</b> <a href="#l00093">dl_ui_scene.h:93</a></div></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_scene_manager_html_a3ff07e0bdaf29e5990464d74b20226f9"><div class="ttname"><a href="classdl_1_1_u_i_1_1_scene_manager.html#a3ff07e0bdaf29e5990464d74b20226f9">dl::UI::SceneManager::~SceneManager</a></div><div class="ttdeci">~SceneManager()</div><div class="ttdef"><b>定义</b> <a href="#l00147">dl_ui_scene.h:147</a></div></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_scene_manager_html_a433718b7f318086c7e77168f8bcd16aa"><div class="ttname"><a href="classdl_1_1_u_i_1_1_scene_manager.html#a433718b7f318086c7e77168f8bcd16aa">dl::UI::SceneManager::Del</a></div><div class="ttdeci">void Del(Scene *scene)</div><div class="ttdef"><b>定义</b> <a href="#l00089">dl_ui_scene.h:89</a></div></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_scene_manager_html_a58f1731d8b939493dd4d52f417574919"><div class="ttname"><a href="classdl_1_1_u_i_1_1_scene_manager.html#a58f1731d8b939493dd4d52f417574919">dl::UI::SceneManager::Get</a></div><div class="ttdeci">Scene * Get(const std::string &amp;name)</div><div class="ttdef"><b>定义</b> <a href="#l00140">dl_ui_scene.h:140</a></div></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_scene_manager_html_a806b48529919ab424355753a40088415"><div class="ttname"><a href="classdl_1_1_u_i_1_1_scene_manager.html#a806b48529919ab424355753a40088415">dl::UI::SceneManager::Add</a></div><div class="ttdeci">void Add(std::string_view name, Scene *scene)</div><div class="ttdoc">添加场景</div><div class="ttdef"><b>定义</b> <a href="#l00071">dl_ui_scene.h:71</a></div></div>
<div class="ttc" id="aclassdl_1_1_u_i_1_1_scene_manager_html_ab423fe37561b4724849e045ddb550b93"><div class="ttname"><a href="classdl_1_1_u_i_1_1_scene_manager.html#ab423fe37561b4724849e045ddb550b93">dl::UI::SceneManager::_update</a></div><div class="ttdeci">void _update()</div><div class="ttdef"><b>定义</b> <a href="#l00129">dl_ui_scene.h:129</a></div></div>
<div class="ttc" id="adl__log_8h_html"><div class="ttname"><a href="dl__log_8h.html">dl_log.h</a></div><div class="ttdoc">日志系统</div></div>
<div class="ttc" id="adl__log_8h_html_a04af09851c431d178f16b24fa1aac1e9"><div class="ttname"><a href="dl__log_8h.html#a04af09851c431d178f16b24fa1aac1e9">log_warn</a></div><div class="ttdeci">#define log_warn(...)</div><div class="ttdef"><b>定义</b> <a href="dl__log_8h_source.html#l00283">dl_log.h:283</a></div></div>
<div class="ttc" id="adl__log_8h_html_abc86a6b34614cb6484cdf935d9350abd"><div class="ttname"><a href="dl__log_8h.html#abc86a6b34614cb6484cdf935d9350abd">log_err</a></div><div class="ttdeci">#define log_err(...)</div><div class="ttdef"><b>定义</b> <a href="dl__log_8h_source.html#l00284">dl_log.h:284</a></div></div>
<div class="ttc" id="adl__range__any_8h_html"><div class="ttname"><a href="dl__range__any_8h.html">dl_range_any.h</a></div><div class="ttdoc">范围操作 任一满足条件</div></div>
<div class="ttc" id="adl__ui__panel_8h_html"><div class="ttname"><a href="dl__ui__panel_8h.html">dl_ui_panel.h</a></div><div class="ttdoc">ui之panel</div></div>
<div class="ttc" id="anamespacedl_1_1_any_html_aade322b75b02d876efc8f7ab70fdb2b2"><div class="ttname"><a href="namespacedl_1_1_any.html#aade322b75b02d876efc8f7ab70fdb2b2">dl::Any::Equal</a></div><div class="ttdeci">bool Equal(const C &amp;container, const V &amp;v)</div><div class="ttdoc">判断容器任意元素等于某值</div><div class="ttdef"><b>定义</b> <a href="dl__range__any_8h_source.html#l00024">dl_range_any.h:24</a></div></div>
<div class="ttc" id="anamespacedl_1_1_u_i_html"><div class="ttname"><a href="namespacedl_1_1_u_i.html">dl::UI</a></div><div class="ttdoc">UI系统</div><div class="ttdef"><b>定义</b> <a href="dl__ui__background_8h_source.html#l00020">dl_ui_background.h:21</a></div></div>
<div class="ttc" id="anamespacedl_html"><div class="ttname"><a href="namespacedl.html">dl</a></div><div class="ttdef"><b>定义</b> <a href="dl__array_8h_source.html#l00021">dl_array.h:22</a></div></div>
<div class="ttc" id="anamespacedl_html_a5ba4bd419f10358df01b9f6301966b41"><div class="ttname"><a href="namespacedl.html#a5ba4bd419f10358df01b9f6301966b41">dl::g_scene</a></div><div class="ttdeci">UI::SceneManager * g_scene</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
制作者&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.1
</small></address>
</div><!-- doc-content -->
</body>
</html>