Browse Source

Added clampDefault and mipmapsDefault settings to MaterialManager to set the texture clamping and mimap generation defaults

Ivan Safrin 12 years ago
parent
commit
bb3204a27a

+ 3 - 1
Core/Contents/Include/PolyMaterialManager.h

@@ -90,7 +90,9 @@ namespace Polycode {
 			Shader *getShaderByIndex(unsigned int index);
 		
 			bool premultiplyAlphaOnLoad;
-		
+			bool clampDefault;
+			bool mipmapsDefault;
+			
 		private:
 			std::vector<Texture*> textures;
 			std::vector<Material*> materials;

+ 1 - 1
Core/Contents/Include/PolySceneMesh.h

@@ -92,7 +92,7 @@ namespace Polycode {
 			* @param fileName Filename to load the mesh from.
 			* @param clamp If true, clamps the texture to edges. See Texture for details on that.
 			*/
-			void loadTexture(const String& fileName, bool clamp=true);
+			void loadTexture(const String& fileName);
 			
 			/**
 			* Loads a skeleton from a file and applies it to the scene mesh.

+ 2 - 0
Core/Contents/Source/PolyMaterialManager.cpp

@@ -36,6 +36,8 @@ using std::vector;
 
 MaterialManager::MaterialManager() {
 	premultiplyAlphaOnLoad = false;
+	clampDefault = false;
+	mipmapsDefault = true;
 }
 
 MaterialManager::~MaterialManager() {

+ 2 - 1
Core/Contents/Source/PolyResourceManager.cpp

@@ -175,13 +175,14 @@ void ResourceManager::addResource(Resource *resource) {
 }
 
 void ResourceManager::parseTextures(const String& dirPath, bool recursive, const String& basePath) {
+	MaterialManager *materialManager = CoreServices::getInstance()->getMaterialManager();
 	vector<OSFileEntry> resourceDir;
 	resourceDir = OSBasics::parseFolder(dirPath, false);
 	for(int i=0; i < resourceDir.size(); i++) {	
 		if(resourceDir[i].type == OSFileEntry::TYPE_FILE) {
 			if(resourceDir[i].extension == "png") {
 				Logger::log("Adding texture %s\n", resourceDir[i].nameWithoutExtension.c_str());
-				Texture *t = CoreServices::getInstance()->getMaterialManager()->createTextureFromFile(resourceDir[i].fullPath);
+				Texture *t = materialManager->createTextureFromFile(resourceDir[i].fullPath, materialManager->clampDefault, materialManager->mipmapsDefault);
 				if(t) {
 					if(basePath == "") {
 						t->setResourceName(resourceDir[i].name);					

+ 4 - 2
Core/Contents/Source/PolySceneLabel.cpp

@@ -51,11 +51,13 @@ void SceneLabel::setText(const String& newText) {
 		return;
 	}
 
+	MaterialManager *materialManager = CoreServices::getInstance()->getMaterialManager();
+	
 	if(texture)
-		CoreServices::getInstance()->getMaterialManager()->deleteTexture(texture);
+		materialManager->deleteTexture(texture);
 		
 	label->setText(newText);	
-	texture = CoreServices::getInstance()->getMaterialManager()->createTextureFromImage(label);
+	texture = materialManager->createTextureFromImage(label, materialManager->clampDefault, materialManager->mipmapsDefault);
 
 	if(material) {
 		localShaderOptions->clearTexture("diffuse");

+ 3 - 2
Core/Contents/Source/PolySceneMesh.cpp

@@ -147,8 +147,9 @@ Texture *SceneMesh::getTexture() {
 }
 
 
-void SceneMesh::loadTexture(const String& fileName, bool clamp) {
-	texture = CoreServices::getInstance()->getMaterialManager()->createTextureFromFile(fileName, clamp);
+void SceneMesh::loadTexture(const String& fileName) {
+	MaterialManager *materialManager = CoreServices::getInstance()->getMaterialManager();
+	texture = materialManager->createTextureFromFile(fileName, materialManager->clampDefault, materialManager->mipmapsDefault);
 }
 
 ShaderBinding *SceneMesh::getLocalShaderOptions() {

+ 4 - 2
Core/Contents/Source/PolyScreenMesh.cpp

@@ -78,11 +78,13 @@ void ScreenMesh::setTexture(Texture *texture) {
 }
 
 void ScreenMesh::loadTexture(const String& fileName) {
-	texture = CoreServices::getInstance()->getMaterialManager()->createTextureFromFile(fileName, false, false);
+	MaterialManager *materialManager = CoreServices::getInstance()->getMaterialManager();
+	texture = materialManager->createTextureFromFile(fileName, materialManager->clampDefault, materialManager->mipmapsDefault);
 }
 
 void ScreenMesh::loadTexture(Image *image) {
-	texture = CoreServices::getInstance()->getMaterialManager()->createTextureFromImage(image, false, false);
+	MaterialManager *materialManager = CoreServices::getInstance()->getMaterialManager();
+	texture = materialManager->createTextureFromImage(image, materialManager->clampDefault, materialManager->mipmapsDefault);
 }
 
 void ScreenMesh::clearMaterial() {