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

Cpper
C/C++高級工程師 Android高級軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語言 程序猿
在蓋莫游戲引擎的書寫過程中先后書寫了資源管理器,場景管理器,模型管理器等管理器類.之后感覺很有必要寫一個泛型的管理器類了.這個可以少做一些重復性的工作了。
管理器類無非就是獲取當前對象個數,對象生成,對象按名索取等等
經過考慮,草料書寫如下:
 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     //! 構造,析構場景管理器
18     //////////////////////////////////////////////////////// 
19     Manager(){}
20     virtual ~Manager() = 0
21 public:     
22                                           
23     ////////////////////////////////////////////////////////////
24     /// 獲取當前管理器中的對象個數
25     ////////////////////////////////////////////////////////////                                         
26     inline uint32 GetObjectNumber()const{return objects.size();}
27     
28     ////////////////////////////////////////////////////////////
29     /// 檢測當前管理器中是否存在對象
30     ////////////////////////////////////////////////////////////      
31     inline bool   HasObject()const{return !objects.empty();}
32     
33     ////////////////////////////////////////////////////////////
34     /// 獲取給定索引的對象(如果對象不存在則生成一個新的對象)
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     /// 生成一個新的對象
45     ////////////////////////////////////////////////////////////     
46     virtual RefPtr<ThisObj> CreateObject(const Type& name) = 0
47     
48     ////////////////////////////////////////////////////////////
49     /// 銷毀指定名字的對象
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     /// 管理器對象清空
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作為基本的管理器容器
同時其中CreateObject函數是一個虛擬函數需要重載之
然后我們就可以這樣寫具體的的管理器了.
比如:
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 閱讀(1296) 評論(8)  編輯 收藏 引用 所屬分類: Game引擎
Comments
  • # re: 蓋莫游戲引擎中的范管理器類
    ccsdu2009
    Posted @ 2010-03-08 20:53
    ////////////////////////////////////////////////////////////
    49 /// 銷毀指定名字的對象
    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 }   回復  更多評論   
  • # re: 蓋莫游戲引擎中的范管理器類
    陳梓瀚(vczh)
    Posted @ 2010-03-09 00:32
    跟一個map沒區別……  回復  更多評論   
  • # re: 蓋莫游戲引擎中的范管理器類
    東北證券官方網站
    Posted @ 2010-03-09 02:08
    收藏了。。。





    http://www.keybeta.com/quote/  回復  更多評論   
  • # re: 蓋莫游戲引擎中的范管理器類
    凡客領帶
    Posted @ 2010-03-09 10:00
    很好12363546+6.36552  回復  更多評論   
  • # 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 }   回復  更多評論   
  • # re: 蓋莫游戲引擎中的范管理器類
    ccsdu2009
    Posted @ 2010-03-09 10:58
    @cui
    謝謝
    完成功能是第一要務
    效率是其次的  回復  更多評論   
  • # re: 蓋莫游戲引擎中的范管理器類
    cui
    Posted @ 2010-03-09 15:20
    @ccsdu2009

    強詞奪理! 這種代碼需要費神的思考嗎?比你的舊代碼行數多嗎?  回復  更多評論   
  • # re: 蓋莫游戲引擎中的范管理器類
    ccsdu2009
    Posted @ 2010-03-09 15:51
    map的erase有三個版本
     1 關于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~
      回復  更多評論   
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美xxxx在线观看| 麻豆久久婷婷| 99re热精品| 欧美日韩精品不卡| 这里只有精品丝袜| 夜夜爽99久久国产综合精品女不卡| 欧美va亚洲va香蕉在线| 亚洲欧洲在线观看| 99精品国产在热久久| 欧美婷婷久久| 久久精品午夜| 免费成人av在线看| 夜夜精品视频| 亚洲男人的天堂在线观看| 国产一区二区久久久| 蜜臀久久99精品久久久久久9| 久久亚洲精品伦理| 亚洲手机成人高清视频| 亚洲免费在线观看视频| 亚洲国产经典视频| 一区二区久久久久| 国产亚洲欧美激情| 亚洲欧洲日本一区二区三区| 欧美日韩不卡合集视频| 久久精品一区| 欧美女同视频| 久久成人免费视频| 欧美精品在线视频| 久久国产黑丝| 欧美日本三级| 久久精品国产99国产精品澳门| 快播亚洲色图| 欧美在线影院在线视频| 欧美国产欧美综合| 欧美在线视频在线播放完整版免费观看| 午夜日韩在线观看| 亚洲精品一区二区在线观看| 亚洲无线视频| 日韩午夜激情av| 久久久99久久精品女同性| 亚洲尤物视频在线| 欧美大学生性色视频| 久久精品水蜜桃av综合天堂| 欧美三区在线视频| 欧美激情一区二区三区| 国产视频一区二区在线观看| 在线视频亚洲一区| 日韩视频在线免费| 免费看成人av| 美女诱惑黄网站一区| 国产深夜精品| 亚洲一区日韩在线| 亚洲在线日韩| 欧美日韩亚洲一区二区| 亚洲高清免费在线| 在线精品国产欧美| 久久九九精品99国产精品| 欧美影视一区| 国产香蕉久久精品综合网| 亚洲少妇一区| 亚洲欧美成人一区二区在线电影| 欧美区在线播放| 亚洲欧洲日产国产综合网| 亚洲国产经典视频| 免费在线亚洲欧美| 欧美激情四色 | 欧美午夜精品理论片a级按摩 | 亚洲免费视频观看| 欧美裸体一区二区三区| 最新成人av在线| 亚洲精品自在久久| 欧美激情一区二区三区在线视频| 男女精品视频| 亚洲国内高清视频| 欧美v亚洲v综合ⅴ国产v| 亚洲国产精品电影| 日韩香蕉视频| 欧美日韩黄色大片| 亚洲小视频在线观看| 欧美在线啊v| 一区国产精品| 免费欧美日韩| 亚洲作爱视频| 欧美一级午夜免费电影| 国语精品中文字幕| 美女999久久久精品视频| 亚洲人妖在线| 欧美亚洲专区| 在线日韩精品视频| 欧美日韩国产小视频在线观看| 这里只有精品在线播放| 久久久久国产精品人| 亚洲日本在线观看| 欧美体内she精视频在线观看| 亚洲一区在线免费观看| 老巨人导航500精品| 亚洲精品免费一二三区| 国产精品视频一二三| 久久裸体视频| 亚洲乱码国产乱码精品精天堂 | 夜夜精品视频一区二区| 国产精品麻豆成人av电影艾秋| 欧美在线视频一区二区| 91久久午夜| 久久gogo国模裸体人体| 亚洲精品小视频在线观看| 国产精品一区二区在线观看| 久久裸体艺术| 亚洲欧美精品在线| 亚洲第一页中文字幕| 欧美怡红院视频| 一区二区激情| 影院欧美亚洲| 国产精品免费一区豆花| 欧美成人国产一区二区| 新狼窝色av性久久久久久| 亚洲精品视频在线观看免费| 久久久九九九九| 亚洲伊人观看| 99这里只有精品| 亚洲第一精品福利| 国产欧美日韩中文字幕在线| 欧美日本一区二区高清播放视频| 久久精品国内一区二区三区| 一区二区三区国产在线| 亚洲成色999久久网站| 久久嫩草精品久久久久| 亚洲欧美日韩在线播放| 一区二区三区四区五区精品视频| 亚洲福利免费| 1024亚洲| 亚洲丰满在线| 亚洲电影专区| 亚洲电影在线观看| 狠狠色丁香久久综合频道| 国产伦精品一区二区三区免费迷| 欧美性色综合| 欧美三级在线视频| 欧美日韩网址| 国产精品va| 国产精品人人做人人爽| 国产精品久久久99| 国产精品成人在线观看| 欧美日韩在线视频观看| 欧美日韩午夜视频在线观看| 欧美激情久久久| 欧美日产一区二区三区在线观看| 欧美激情成人在线| 欧美精品v日韩精品v韩国精品v| 你懂的网址国产 欧美| 模特精品裸拍一区| 欧美黄色大片网站| 欧美三级欧美一级| 国产精品免费在线| 国产免费成人av| 红桃视频一区| 亚洲精品字幕| 亚洲一区二区伦理| 西瓜成人精品人成网站| 久久国产精品久久久久久| 久久久福利视频| 欧美韩日一区| 一本色道久久加勒比精品| 亚洲欧美国产一区二区三区| 欧美一区二区三区四区高清| 久久精品一区二区国产| 欧美va亚洲va香蕉在线| 欧美视频二区36p| 国产麻豆日韩| 亚洲欧洲综合| 亚洲欧美日韩精品一区二区| 久久美女性网| 亚洲精品你懂的| 99视频精品免费观看| 欧美一区二区视频在线观看2020| 久久久久国产精品人| 欧美激情在线| 国产一区二区三区精品久久久| 亚洲国产一区二区精品专区| 亚洲天堂网在线观看| 久久伊人精品天天| 亚洲精品在线视频观看| 欧美一区二区三区视频免费| 欧美大片在线影院| 国产亚洲激情在线| 99精品99久久久久久宅男| 久久久久99| 一本在线高清不卡dvd| 久久久久久夜| 国产精品视频yy9299一区| 亚洲七七久久综合桃花剧情介绍| 午夜精品久久| 亚洲人成毛片在线播放| 久久精品女人天堂| 国产精品福利久久久| 亚洲美女av网站| 米奇777超碰欧美日韩亚洲| 亚洲一级片在线观看| 欧美日本一区二区高清播放视频| 国产专区综合网|