# Home    # nevrax.com   
Nevrax
Nevrax.org
#News
#Mailing-list
#Documentation
#CVS
#Bugs
#License
Docs
 
Documentation  
Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages   Search  

landscapeig_manager.h

Go to the documentation of this file.
00001 
00007 /* Copyright, 2001 Nevrax Ltd.
00008  *
00009  * This file is part of NEVRAX NEL.
00010  * NEVRAX NEL is free software; you can redistribute it and/or modify
00011  * it under the terms of the GNU General Public License as published by
00012  * the Free Software Foundation; either version 2, or (at your option)
00013  * any later version.
00014 
00015  * NEVRAX NEL is distributed in the hope that it will be useful, but
00016  * WITHOUT ANY WARRANTY; without even the implied warranty of
00017  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
00018  * General Public License for more details.
00019 
00020  * You should have received a copy of the GNU General Public License
00021  * along with NEVRAX NEL; see the file COPYING. If not, write to the
00022  * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
00023  * MA 02111-1307, USA.
00024  */
00025 
00026 #ifndef NL_LANDSCAPEIG_MANAGER_H
00027 #define NL_LANDSCAPEIG_MANAGER_H
00028 
00029 #include "nel/misc/types_nl.h"
00030 #include <vector>
00031 #include <map>
00032 #include <string>
00033 
00034 
00035 namespace NL3D 
00036 {
00037 
00038 
00039 class   UInstanceGroup;
00040 class   UScene;
00041 
00042 
00043 // ***************************************************************************
00050 class CLandscapeIGManager
00051 {
00052 public:
00053 
00055         CLandscapeIGManager();
00056         ~CLandscapeIGManager();
00057 
00062         void    initIG(UScene *scene, const std::string &igDesc);
00063 
00068         UInstanceGroup *loadZoneIG(const std::string &name);
00069 
00075         void    loadArrayZoneIG(const std::vector<std::string> &names, std::vector<UInstanceGroup *> *dest = NULL);
00076 
00081         void    unloadZoneIG(const std::string &name);
00082 
00086         void    unloadArrayZoneIG(const std::vector<std::string> &names);
00087 
00089         bool    isIGAddedToScene(const std::string &name) const;
00090 
00092         UInstanceGroup  *getIG(const std::string &name) const;
00093 
00095         void    reset();
00096 
00097 
00099         void    reloadAllIgs();
00100 
00102         void                    getAllIG(std::vector<UInstanceGroup     *> &dest) const;
00103 
00105         void                    getAllIGWithNames(std::vector<std::pair<UInstanceGroup *, std::string> > &dest) const;
00106 
00107 
00108 private:
00109         UScene                  *_Scene;
00110         struct                  CInstanceGroupElement
00111         {
00112                 UInstanceGroup  *Ig;
00113                 bool                    AddedToScene;
00114                 std::string             FileName;
00115 
00116                 CInstanceGroupElement(UInstanceGroup    *ig= NULL, const char *fileName= NULL);
00117                 
00118                 // delete the ig.
00119                 void    release();
00120         };
00121         typedef std::map<std::string, CInstanceGroupElement>    TZoneInstanceGroupMap;
00122         typedef TZoneInstanceGroupMap::iterator                                 ItZoneInstanceGroupMap;
00123         typedef TZoneInstanceGroupMap::const_iterator                   ConstItZoneInstanceGroupMap;
00124         TZoneInstanceGroupMap                   _ZoneInstanceGroupMap;
00125 
00126         std::string             translateName(const std::string &name) const;
00127 
00128 };
00129 
00130 
00131 } // NL3D
00132 
00133 
00134 #endif // NL_LANDSCAPEIG_MANAGER_H
00135 
00136 /* End of landscapeig_manager.h */