diff --git a/CMakeLists.txt b/CMakeLists.txt index 35d5cbc9..94e8814f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,9 +5,6 @@ SET(SRC_FILES source/Block.cpp source/IndexedSurfacePatch.cpp source/MarchingCubesTables.cpp - source/MaterialMap.cpp - source/MaterialMapManager.cpp - source/MaterialMapSerializer.cpp source/PolyVoxSceneManager.cpp source/SurfaceEdge.cpp source/SurfacePatchRenderable.cpp @@ -26,9 +23,6 @@ SET(INC_FILES include/IndexedSurfacePatch.h include/IntegralVector3.h include/MarchingCubesTables.h - include/MaterialMap.h - include/MaterialMapManager.h - include/MaterialMapSerializer.h include/PolyVoxSceneManager.h include/RegionGeometry.h include/SurfaceEdge.h diff --git a/include/MaterialMap.h b/include/MaterialMap.h deleted file mode 100644 index 321033a8..00000000 --- a/include/MaterialMap.h +++ /dev/null @@ -1,76 +0,0 @@ -#ifndef __MATERIALMAP_H__ -#define __MATERIALMAP_H__ - -#include - -#include "TypeDef.h" - -namespace Ogre -{ - class VOXEL_SCENE_MANAGER_API MaterialMap : public Ogre::Resource - { - String mMaterials[256]; - - protected: - - // must implement these from the Ogre::Resource interface - void loadImpl (); - void unloadImpl (); - size_t calculateSize () const; - - public: - - MaterialMap (Ogre::ResourceManager *creator, const Ogre::String &name, - Ogre::ResourceHandle handle, const Ogre::String &group, bool isManual = false, - Ogre::ManualResourceLoader *loader = 0); - - virtual ~MaterialMap (); - - void clearMaterials(); - String getMaterialAtIndex(uchar uIndex); - void setMaterialAtIndex(uchar uIndex, const String& materialName); - - /*void setString (const Ogre::String &str); - const Ogre::String &getString () const;*/ - }; - - class MaterialMapPtr : public Ogre::SharedPtr - { - public: - MaterialMapPtr () : Ogre::SharedPtr () {} - explicit MaterialMapPtr (MaterialMap *rep) : Ogre::SharedPtr (rep) {} - MaterialMapPtr (const MaterialMapPtr &r) : Ogre::SharedPtr (r) {} - MaterialMapPtr (const Ogre::ResourcePtr &r) : Ogre::SharedPtr () - { - // lock & copy other mutex pointer - OGRE_LOCK_MUTEX (*r.OGRE_AUTO_MUTEX_NAME) - OGRE_COPY_AUTO_SHARED_MUTEX (r.OGRE_AUTO_MUTEX_NAME) - pRep = static_cast (r.getPointer ()); - pUseCount = r.useCountPointer (); - if (pUseCount) - { - ++ (*pUseCount); - } - } - - /// Operator used to convert a ResourcePtr to a TextFilePtr - MaterialMapPtr& operator=(const Ogre::ResourcePtr& r) - { - if (pRep == static_cast (r.getPointer ())) - return *this; - release (); - // lock & copy other mutex pointer - OGRE_LOCK_MUTEX (*r.OGRE_AUTO_MUTEX_NAME) - OGRE_COPY_AUTO_SHARED_MUTEX(r.OGRE_AUTO_MUTEX_NAME) - pRep = static_cast (r.getPointer()); - pUseCount = r.useCountPointer (); - if (pUseCount) - { - ++ (*pUseCount); - } - return *this; - } - }; -} - -#endif diff --git a/include/MaterialMapManager.h b/include/MaterialMapManager.h deleted file mode 100644 index 16b25807..00000000 --- a/include/MaterialMapManager.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef __MATERIALMAPMANAGER_H__ -#define __MATERIALMAPMANAGER_H__ - -#include -#include "MaterialMap.h" -#include "TypeDef.h" - -namespace Ogre -{ - class VOXEL_SCENE_MANAGER_API MaterialMapManager : public Ogre::ResourceManager, public Ogre::Singleton - { - protected: - - // must implement this from ResourceManager's interface - Ogre::Resource *createImpl(const Ogre::String &name, Ogre::ResourceHandle handle, - const Ogre::String &group, bool isManual, Ogre::ManualResourceLoader *loader, - const Ogre::NameValuePairList *createParams); - - public: - - MaterialMapManager (); - virtual ~MaterialMapManager (); - - virtual MaterialMapPtr load (const Ogre::String &name, const Ogre::String &group); - - static MaterialMapManager &getSingleton (); - static MaterialMapManager *getSingletonPtr (); - }; -} - -#endif diff --git a/include/MaterialMapSerializer.h b/include/MaterialMapSerializer.h deleted file mode 100644 index c6744e46..00000000 --- a/include/MaterialMapSerializer.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef __MATERIALMAPSERIALIZER_H__ -#define __MATERIALMAPSERIALIZER_H__ - -#include -#include - -#include - -namespace Ogre -{ - class MaterialMap; // forward declaration - - class MaterialMapSerializer : public Ogre::Serializer - { - public: - MaterialMapSerializer (); - virtual ~MaterialMapSerializer (); - - void importMaterialMap (Ogre::DataStreamPtr &stream, MaterialMap *pDest); - - private: - void tokenize(const String& str, std::vector& tokens, const String& delimiters = " "); - }; -} - -#endif diff --git a/include/PolyVoxSceneManager.h b/include/PolyVoxSceneManager.h index ebc57016..d15cb1fe 100644 --- a/include/PolyVoxSceneManager.h +++ b/include/PolyVoxSceneManager.h @@ -24,7 +24,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #include "Constants.h" #include "IndexedSurfacePatch.h" -#include "MaterialMap.h" #include "SurfacePatchRenderable.h" #include "SurfaceTriangle.h" //#include "AbstractSurfacePatch.h" @@ -105,7 +104,6 @@ namespace Ogre NormalGenerationMethod m_normalGenerationMethod; VolumePtr volumeData; - MaterialMapPtr materialMap; bool m_bHaveGeneratedMeshes; diff --git a/source/MaterialMap.cpp b/source/MaterialMap.cpp deleted file mode 100644 index 476a28c2..00000000 --- a/source/MaterialMap.cpp +++ /dev/null @@ -1,86 +0,0 @@ -#include "MaterialMap.h" -#include "MaterialMapSerializer.h" - -namespace Ogre -{ - MaterialMap::MaterialMap (Ogre::ResourceManager* creator, const Ogre::String &name, - Ogre::ResourceHandle handle, const Ogre::String &group, bool isManual, - Ogre::ManualResourceLoader *loader) : - Ogre::Resource (creator, name, handle, group, isManual, loader) - { - /* If you were storing a pointer to an object, then you would set that pointer to NULL here. - */ - - clearMaterials(); - - /* For consistency with StringInterface, but we don't add any parameters here - That's because the Resource implementation of StringInterface is to - list all the options that need to be set before loading, of which - we have none as such. Full details can be set through scripts. - */ - createParamDictionary ("MaterialMap"); - } - - MaterialMap::~MaterialMap () - { - unload (); - } - - void MaterialMap::clearMaterials() - { - for(uint ct = 0; ct < 256; ++ct) - { - mMaterials[ct] = ""; - } - } - - // farm out to TextFileSerializer - void MaterialMap::loadImpl () - { - /* If you were storing a pointer to an object, then you would create that object with 'new' here. - */ - - MaterialMapSerializer serializer; - Ogre::DataStreamPtr stream = Ogre::ResourceGroupManager::getSingleton ().openResource (mName, mGroup, true, this); - serializer.importMaterialMap (stream, this); - } - - void MaterialMap::unloadImpl () - { - /* If you were storing a pointer to an object, then you would check the pointer here, - and if it is not NULL, you would destruct the object and set its pointer to NULL again. - */ - - //mString.clear (); - } - - size_t MaterialMap::calculateSize () const - { - size_t uSumOfLengths = 0; - for(uint ct = 0; ct < 256; ++ct) - { - uSumOfLengths += mMaterials[ct].length(); - } - return uSumOfLengths; - } - - String MaterialMap::getMaterialAtIndex(uchar uIndex) - { - return mMaterials[uIndex]; - } - - void MaterialMap::setMaterialAtIndex(uchar uIndex, const String& materialName) - { - mMaterials[uIndex] = materialName; - } - - /*void MaterialMap::setString (const Ogre::String &str) - { - mString = str; - } - - const Ogre::String &MaterialMap::getString () const - { - return mString; - }*/ -} diff --git a/source/MaterialMapManager.cpp b/source/MaterialMapManager.cpp deleted file mode 100644 index d369feed..00000000 --- a/source/MaterialMapManager.cpp +++ /dev/null @@ -1,55 +0,0 @@ -#include "MaterialMapManager.h" - -namespace Ogre -{ - template<> MaterialMapManager *Ogre::Singleton::ms_Singleton = 0; - - MaterialMapManager *MaterialMapManager::getSingletonPtr () - { - return ms_Singleton; - } - - MaterialMapManager &MaterialMapManager::getSingleton () - { - assert (ms_Singleton); - return (*ms_Singleton); - } - - MaterialMapManager::MaterialMapManager () - { - mResourceType = "MaterialMap"; - - // low, because it will likely reference other resources - mLoadOrder = 30.0f; - - // this is how we register the ResourceManager with OGRE - Ogre::ResourceGroupManager::getSingleton ()._registerResourceManager (mResourceType, this); - } - - MaterialMapManager::~MaterialMapManager() - { - // and this is how we unregister it - Ogre::ResourceGroupManager::getSingleton ()._unregisterResourceManager (mResourceType); - } - - MaterialMapPtr MaterialMapManager::load (const Ogre::String &name, const Ogre::String &group) - { - MaterialMapPtr textf = getByName (name); - - if (textf.isNull ()) - { - textf = create (name, group); - } - - textf->load (); - - return textf; - } - - Ogre::Resource *MaterialMapManager::createImpl (const Ogre::String &name, Ogre::ResourceHandle handle, - const Ogre::String &group, bool isManual, Ogre::ManualResourceLoader *loader, - const Ogre::NameValuePairList *createParams) - { - return new MaterialMap (this, name, handle, group, isManual, loader); - } -} diff --git a/source/MaterialMapSerializer.cpp b/source/MaterialMapSerializer.cpp deleted file mode 100644 index 41ad2ad7..00000000 --- a/source/MaterialMapSerializer.cpp +++ /dev/null @@ -1,61 +0,0 @@ -#include "MaterialMapSerializer.h" -#include "MaterialMap.h" - -#include - -using namespace std; - -namespace Ogre -{ - MaterialMapSerializer::MaterialMapSerializer () - { - - } - - MaterialMapSerializer::~MaterialMapSerializer () - { - - } - - void MaterialMapSerializer::importMaterialMap (Ogre::DataStreamPtr &stream, MaterialMap *pDest) - { - pDest->clearMaterials(); - while(!stream->eof()) - { - String line = stream->getLine(); - vector tokens; - tokenize(line, tokens, " ="); - if(tokens.size() == 2) - { - //Get the index - String sIndex = tokens[0]; - if(StringConverter::isNumber(sIndex)) - { - int iIndex = StringConverter::parseInt(sIndex); - if((iIndex > 0) && (iIndex < 256)) - { - pDest->setMaterialAtIndex(iIndex, tokens[1]); - } - } - } - } - } - - void MaterialMapSerializer::tokenize(const String& str, vector& tokens, const String& delimiters) - { - // Skip delimiters at beginning. - String::size_type lastPos = str.find_first_not_of(delimiters, 0); - // Find first "non-delimiter". - String::size_type pos = str.find_first_of(delimiters, lastPos); - - while (String::npos != pos || String::npos != lastPos) - { - // Found a token, add it to the vector. - tokens.push_back(str.substr(lastPos, pos - lastPos)); - // Skip delimiters. Note the "not_of" - lastPos = str.find_first_not_of(delimiters, pos); - // Find next "non-delimiter" - pos = str.find_first_of(delimiters, lastPos); - } - } -} diff --git a/source/PolyVoxSceneManager.cpp b/source/PolyVoxSceneManager.cpp index 4f5f644b..6d28c349 100644 --- a/source/PolyVoxSceneManager.cpp +++ b/source/PolyVoxSceneManager.cpp @@ -18,7 +18,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ******************************************************************************/ #include "MarchingCubesTables.h" -#include "MaterialMapManager.h" #include "SurfaceVertex.h" #include "SurfaceEdge.h" #include "IndexedSurfacePatch.h" @@ -63,8 +62,6 @@ namespace Ogre volumeData->tidy(); - //Load material map - materialMap = MaterialMapManager::getSingletonPtr()->load(filename + ".materialmap", "General"); setAllUpToDateFlagsTo(false);