青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Cpper
C/C++高級(jí)工程師 Android高級(jí)軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語(yǔ)言 程序猿
在蓋莫游戲引擎的書寫過(guò)程中先后書寫了資源管理器,場(chǎng)景管理器,模型管理器等管理器類.之后感覺(jué)很有必要寫一個(gè)泛型的管理器類了.這個(gè)可以少做一些重復(fù)性的工作了。
管理器類無(wú)非就是獲取當(dāng)前對(duì)象個(gè)數(shù),對(duì)象生成,對(duì)象按名索取等等
經(jīng)過(guò)考慮,草料書寫如下:
 1 namespace core
 2 {
 3 
 4 ////////////////////////////////////////////////////////////
 5 //! 定義引擎泛型管理器類
 6 //////////////////////////////////////////////////////////// 
 7 template<class Obj = Object, class Type = std::string>
 8 class Manager  
 9 {        
10 public:     
11     typedef Type                                          ThisType;
12     typedef Obj                                           ThisObj;
13     typedef std::map<ThisType,RefPtr<ThisObj> >           Table;
14     //! typedef std::map<ThisType,RefPtr<ThisObj> >::iterator TableItr; 
15     
16     ////////////////////////////////////////////////////////
17     //! 構(gòu)造,析構(gòu)場(chǎng)景管理器
18     //////////////////////////////////////////////////////// 
19     Manager(){}
20     virtual ~Manager() = 0
21 public:     
22                                           
23     ////////////////////////////////////////////////////////////
24     /// 獲取當(dāng)前管理器中的對(duì)象個(gè)數(shù)
25     ////////////////////////////////////////////////////////////                                         
26     inline uint32 GetObjectNumber()const{return objects.size();}
27     
28     ////////////////////////////////////////////////////////////
29     /// 檢測(cè)當(dāng)前管理器中是否存在對(duì)象
30     ////////////////////////////////////////////////////////////      
31     inline bool   HasObject()const{return !objects.empty();}
32     
33     ////////////////////////////////////////////////////////////
34     /// 獲取給定索引的對(duì)象(如果對(duì)象不存在則生成一個(gè)新的對(duì)象)
35     ////////////////////////////////////////////////////////////       
36     inline RefPtr<Object> GetObject(const Type& name)
37     {
38         if(objects.find(name) != objects.end())
39             return objects[name];
40         return     NULL;
41     }
42     
43     ////////////////////////////////////////////////////////////
44     /// 生成一個(gè)新的對(duì)象
45     ////////////////////////////////////////////////////////////     
46     virtual RefPtr<ThisObj> CreateObject(const Type& name) = 0
47     
48     ////////////////////////////////////////////////////////////
49     /// 銷毀指定名字的對(duì)象
50     ////////////////////////////////////////////////////////////
51     inline bool KillObject(const Type& name)
52     {    
53         std::map<std::string,RefPtr<Model> >::iterator itr = objects.find(name);
54         if(itr == objects.end())
55             return false;
56         objects.erase(name);
57         return NULL;         
58     }     
59 
60     ////////////////////////////////////////////////////////////
61     /// 管理器對(duì)象清空
62     ////////////////////////////////////////////////////////////    
63     inline void ClearObject(){objects.clear();}
64 protected:
65     Table    objects;     
66 };
67 
68 template<class Obj, class Type>
69 Manager<Obj,Type>::~Manager()
70 {
71     ClearObject();                      
72 
73 
其中使用std::map作為基本的管理器容器
同時(shí)其中CreateObject函數(shù)是一個(gè)虛擬函數(shù)需要重載之
然后我們就可以這樣寫具體的的管理器了.
比如:
1 class ModelManager : public Manager<Model,std::string>
2 {
3 public:
4      RefPtr<Model> CreateObject(const std::string &);    
5 };



posted on 2010-03-08 20:49 ccsdu2009 閱讀(1293) 評(píng)論(8)  編輯 收藏 引用 所屬分類: Game引擎
Comments
  • # re: 蓋莫游戲引擎中的范管理器類
    ccsdu2009
    Posted @ 2010-03-08 20:53
    ////////////////////////////////////////////////////////////
    49 /// 銷毀指定名字的對(duì)象
    50 ////////////////////////////////////////////////////////////
    51 inline bool KillObject(const Type& name)
    52 {
    53 std::map<std::string,RefPtr<Model> >::iterator itr = objects.find(name);
    54 if(itr == objects.end())
    55 return false;
    56 objects.erase(name);
    57 return true;
    58 }   回復(fù)  更多評(píng)論   
  • # re: 蓋莫游戲引擎中的范管理器類
    陳梓瀚(vczh)
    Posted @ 2010-03-09 00:32
    跟一個(gè)map沒(méi)區(qū)別……  回復(fù)  更多評(píng)論   
  • # re: 蓋莫游戲引擎中的范管理器類
    東北證券官方網(wǎng)站
    Posted @ 2010-03-09 02:08
    收藏了。。。





    http://www.keybeta.com/quote/  回復(fù)  更多評(píng)論   
  • # re: 蓋莫游戲引擎中的范管理器類
    凡客領(lǐng)帶
    Posted @ 2010-03-09 10:00
    很好12363546+6.36552  回復(fù)  更多評(píng)論   
  • # re: 蓋莫游戲引擎中的范管理器類
    cui
    Posted @ 2010-03-09 10:20
    你這效率也太低了吧

    36 inline RefPtr<Object> GetObject(const Type& name)
    37 {
    38 itertor itor = objects.find(name);
    if (itor != objects.end())
    39 return itor->second;
    40 return RefPtr<Object>() ;
    41 }


    inline bool KillObject(const Type& name)
    52 {
    53 return objects.erase (name) > 0;
    58 }   回復(fù)  更多評(píng)論   
  • # re: 蓋莫游戲引擎中的范管理器類
    ccsdu2009
    Posted @ 2010-03-09 10:58
    @cui
    謝謝
    完成功能是第一要?jiǎng)?wù)
    效率是其次的  回復(fù)  更多評(píng)論   
  • # re: 蓋莫游戲引擎中的范管理器類
    cui
    Posted @ 2010-03-09 15:20
    @ccsdu2009

    強(qiáng)詞奪理! 這種代碼需要費(fèi)神的思考嗎?比你的舊代碼行數(shù)多嗎?  回復(fù)  更多評(píng)論   
  • # re: 蓋莫游戲引擎中的范管理器類
    ccsdu2009
    Posted @ 2010-03-09 15:51
    map的erase有三個(gè)版本
     1 關(guān)于map的erase
     2       void
     3       erase(iterator __position)
     4       { _M_t.erase(__position); }
     5 
     6       /**
     7        *  @brief Erases elements according to the provided key.
     8        *  @param  x  Key of element to be erased.
     9        *  @return  The number of elements erased.
    10        *
    11        *  This function erases all the elements located by the given key from
    12        *  a %map.
    13        *  Note that this function only erases the element, and that if
    14        *  the element is itself a pointer, the pointed-to memory is not touched
    15        *  in any way.  Managing the pointer is the user's responsibilty.
    16        */
    17       size_type
    18       erase(const key_type& __x)
    19       { return _M_t.erase(__x); }
    20 
    21       /**
    22        *  @brief Erases a [first,last) range of elements from a %map.
    23        *  @param  first  Iterator pointing to the start of the range to be
    24        *                 erased.
    25        *  @param  last  Iterator pointing to the end of the range to be erased.
    26        *
    27        *  This function erases a sequence of elements from a %map.
    28        *  Note that this function only erases the element, and that if
    29        *  the element is itself a pointer, the pointed-to memory is not touched
    30        *  in any way.  Managing the pointer is the user's responsibilty.
    31        */
    32       void
    33       erase(iterator __first, iterator __last)
    34       { _M_t.erase(__first, __last); }
    我以前只注意到map.erase(itr);
    謝謝提醒O(∩_∩)O~
      回復(fù)  更多評(píng)論   
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲激情欧美激情| 亚洲一区精彩视频| 欧美精品一区二区三区一线天视频 | 久久久亚洲影院你懂的| 欧美在线观看天堂一区二区三区| 欧美一级二区| 裸体一区二区| 亚洲日本电影| 亚洲特色特黄| 欧美在线视频一区二区| 久久蜜桃资源一区二区老牛 | 先锋a资源在线看亚洲| 午夜免费在线观看精品视频| 久久国产精品久久久久久久久久| 久久久亚洲欧洲日产国码αv | 亚洲自拍高清| 久久久久国产精品麻豆ai换脸| 久久午夜色播影院免费高清| 毛片一区二区三区| 欧美性做爰毛片| 精品成人免费| 亚洲在线观看免费视频| 免费91麻豆精品国产自产在线观看 | 亚洲视频一区二区免费在线观看| 亚洲欧美日韩精品久久久久| 久久视频免费观看| 亚洲第一精品夜夜躁人人爽| 亚洲一区二区三| 乱中年女人伦av一区二区| 国产精品久久久久久久久久尿| 伊人精品久久久久7777| 亚洲一区3d动漫同人无遮挡| 免费在线一区二区| 狠狠入ady亚洲精品| 欧美+日本+国产+在线a∨观看| 欧美日韩不卡合集视频| 国产一区二区三区久久悠悠色av| 亚洲国产精品久久人人爱蜜臀 | 韩国精品在线观看| 亚洲一区综合| 亚洲国产aⅴ天堂久久| 香港成人在线视频| 欧美性猛交xxxx免费看久久久 | 欧美国产日韩免费| 午夜视频一区二区| 欧美日韩中文字幕精品| 最新亚洲一区| 老司机凹凸av亚洲导航| 亚洲综合日韩中文字幕v在线| 欧美久久电影| 亚洲精品视频二区| 欧美国产亚洲精品久久久8v| 久久免费视频观看| 国产亚洲人成网站在线观看| 小黄鸭精品aⅴ导航网站入口| 亚洲麻豆国产自偷在线| 欧美福利专区| 亚洲久久视频| 91久久线看在观草草青青| 久久综合伊人77777尤物| 伊人久久噜噜噜躁狠狠躁 | 亚洲伦理久久| 亚洲国产精品一区二区www在线| 久久久久久久久久久久久9999| 国产一区二区高清| 看欧美日韩国产| 久久午夜电影网| 亚洲三级性片| 亚洲精品一区二区三区樱花| 欧美激情国产高清| 中文精品一区二区三区| 亚洲午夜女主播在线直播| 国产日韩亚洲欧美| 久久综合狠狠| 欧美二区不卡| 亚洲欧美日韩综合国产aⅴ| 亚洲欧美在线磁力| 狠狠综合久久av一区二区老牛| 美女露胸一区二区三区| 欧美成人免费小视频| 宅男噜噜噜66一区二区| 亚洲欧美日韩一区二区在线| 韩国福利一区| 日韩午夜在线视频| 国产麻豆视频精品| 亚洲欧美国产高清| 黄色成人av网| 亚洲精选91| 国产精品久久久久久影院8一贰佰 国产精品久久久久久影视 | 久久久国产一区二区三区| 亚洲大片免费看| 亚洲卡通欧美制服中文| 国产精品久久久久久久一区探花| 久久久久久久久久看片| 欧美高清你懂得| 欧美专区在线播放| 欧美高清视频一区二区三区在线观看| 日韩一区二区精品视频| 欧美一区二区大片| 99这里只有精品| 性色一区二区三区| 99精品欧美一区| 欧美一区二区三区精品| 亚洲精品国精品久久99热| 午夜国产一区| 一道本一区二区| 久久久美女艺术照精彩视频福利播放| 日韩亚洲一区二区| 久久偷看各类wc女厕嘘嘘偷窃| 亚洲欧美成人网| 欧美国产亚洲精品久久久8v| 久久久久成人网| 国产精品美女在线观看| 亚洲精品一区二区三区婷婷月| 国外成人免费视频| 亚洲一区二区在线免费观看| 亚洲免费观看在线观看| 久久久久久久综合| 久久精品国产亚洲一区二区三区 | 亚洲欧洲综合另类| 狠狠色狠狠色综合人人| 一区二区日韩免费看| 亚洲精品影院在线观看| 久久久久久久999精品视频| 欧美一区二区在线播放| 国产精品你懂的在线| 亚洲另类自拍| 99在线精品免费视频九九视| 欧美/亚洲一区| 亚洲高清网站| 亚洲欧洲一区二区在线播放| 久久天天狠狠| 欧美不卡视频一区| 激情欧美一区二区三区在线观看| 欧美伊人久久| 老司机aⅴ在线精品导航| 红桃视频国产精品| 久久久久久日产精品| 狼狼综合久久久久综合网 | 一区二区在线不卡| 久久www免费人成看片高清| 久久精品毛片| 精品二区视频| 女生裸体视频一区二区三区| 国产精品成人免费精品自在线观看| 欧美黄在线观看| 国产乱码精品一区二区三区忘忧草| 夜夜狂射影院欧美极品| 亚洲欧美999| 国产亚洲欧美日韩一区二区| 久久精品国产69国产精品亚洲| 久久精品亚洲| 在线观看日韩av电影| 欧美激情一区在线观看| 夜夜嗨av一区二区三区网页| 欧美一区二区视频网站| 国外成人在线视频| 欧美福利一区二区三区| 一区二区三区四区五区精品| 久久成人一区| 亚洲精品国产精品国自产观看浪潮 | 国产精品一区一区| 久久国产精品亚洲va麻豆| 欧美国产欧美亚州国产日韩mv天天看完整| 在线精品国产欧美| 欧美日韩精品一区二区三区| 亚洲欧美日韩精品一区二区| 欧美gay视频| 亚洲自拍16p| 在线观看日韩专区| 国产精品久久久久久久久婷婷| 久久国产精品电影| 99成人在线| 久久综合九色综合欧美就去吻| 亚洲另类在线视频| 国产日韩一区| 欧美日韩国产高清| 久久视频这里只有精品| 亚洲伊人观看| 亚洲精品一二区| 久久亚洲精品一区二区| 亚洲一区二三| 日韩视频三区| 在线观看三级视频欧美| 国产精品久久久免费| 牛夜精品久久久久久久99黑人| 亚洲欧美日韩视频一区| 洋洋av久久久久久久一区| 男人插女人欧美| 欧美诱惑福利视频| 99re8这里有精品热视频免费| 国产一区二区黄| 国产精品久久久久一区二区三区共 | 亚洲激情专区| 蜜桃精品久久久久久久免费影院| 亚洲欧美另类综合偷拍| 一本色道久久88精品综合| 亚洲国产精品一区二区第一页| 国产精品自拍在线| 欧美性大战久久久久久久|