diff options
Diffstat (limited to 'source/Irrlicht/CNullDriver.cpp')
-rw-r--r-- | source/Irrlicht/CNullDriver.cpp | 189 |
1 files changed, 1 insertions, 188 deletions
diff --git a/source/Irrlicht/CNullDriver.cpp b/source/Irrlicht/CNullDriver.cpp index da64779..71fc9a8 100644 --- a/source/Irrlicht/CNullDriver.cpp +++ b/source/Irrlicht/CNullDriver.cpp @@ -14,7 +14,7 @@ #include "IAnimatedMeshSceneNode.h"
#include "CMeshManipulator.h"
#include "CColorConverter.h"
-#include "IAttributeExchangingObject.h"
+#include "IReferenceCounted.h"
#include "IRenderTarget.h"
@@ -2000,193 +2000,6 @@ void CNullDriver::swapMaterialRenderers(u32 idx1, u32 idx2, bool swapNames) }
}
-//! Creates material attributes list from a material, usable for serialization and more.
-io::IAttributes* CNullDriver::createAttributesFromMaterial(const video::SMaterial& material,
- io::SAttributeReadWriteOptions* options)
-{
- io::CAttributes* attr = new io::CAttributes(this);
-
- attr->addEnum("Type", material.MaterialType, sBuiltInMaterialTypeNames);
-
- attr->addColor("Ambient", material.AmbientColor);
- attr->addColor("Diffuse", material.DiffuseColor);
- attr->addColor("Emissive", material.EmissiveColor);
- attr->addColor("Specular", material.SpecularColor);
-
- attr->addFloat("Shininess", material.Shininess);
- attr->addFloat("Param1", material.MaterialTypeParam);
- attr->addFloat("Param2", material.MaterialTypeParam2);
- attr->addFloat("Thickness", material.Thickness);
-
- core::stringc prefix="Texture";
- u32 i;
- for (i=0; i<MATERIAL_MAX_TEXTURES; ++i)
- {
- video::ITexture* texture = material.getTexture(i);
- if (options && (options->Flags&io::EARWF_USE_RELATIVE_PATHS) && options->Filename && texture)
- {
- io::path path = FileSystem->getRelativeFilename(
- FileSystem->getAbsolutePath(material.getTexture(i)->getName()), options->Filename);
- attr->addTexture((prefix+core::stringc(i+1)).c_str(), material.getTexture(i), path);
- }
- else
- {
- attr->addTexture((prefix+core::stringc(i+1)).c_str(), texture);
- }
- }
-
- attr->addBool("Wireframe", material.Wireframe);
- attr->addBool("PointCloud", material.PointCloud);
- attr->addBool("GouraudShading", material.GouraudShading);
- attr->addBool("Lighting", material.Lighting);
- attr->addEnum("ZWriteEnable", (irr::s32)material.ZWriteEnable, video::ZWriteNames);
- attr->addInt("ZBuffer", material.ZBuffer);
- attr->addBool("BackfaceCulling", material.BackfaceCulling);
- attr->addBool("FrontfaceCulling", material.FrontfaceCulling);
- attr->addBool("FogEnable", material.FogEnable);
- attr->addBool("NormalizeNormals", material.NormalizeNormals);
- attr->addBool("UseMipMaps", material.UseMipMaps);
- attr->addInt("AntiAliasing", material.AntiAliasing);
- attr->addInt("ColorMask", material.ColorMask);
- attr->addInt("ColorMaterial", material.ColorMaterial);
- attr->addInt("BlendOperation", material.BlendOperation);
- attr->addFloat("BlendFactor", material.BlendFactor);
- attr->addInt("PolygonOffsetFactor", material.PolygonOffsetFactor);
- attr->addEnum("PolygonOffsetDirection", material.PolygonOffsetDirection, video::PolygonOffsetDirectionNames);
- attr->addFloat("PolygonOffsetDepthBias", material.PolygonOffsetDepthBias);
- attr->addFloat("PolygonOffsetSlopeScale", material.PolygonOffsetSlopeScale);
-
- // TODO: Would be nice to have a flag that only serializes rest of texture data when a texture pointer exists.
- prefix = "BilinearFilter";
- for (i=0; i<MATERIAL_MAX_TEXTURES; ++i)
- attr->addBool((prefix+core::stringc(i+1)).c_str(), material.TextureLayer[i].BilinearFilter);
- prefix = "TrilinearFilter";
- for (i=0; i<MATERIAL_MAX_TEXTURES; ++i)
- attr->addBool((prefix+core::stringc(i+1)).c_str(), material.TextureLayer[i].TrilinearFilter);
- prefix = "AnisotropicFilter";
- for (i=0; i<MATERIAL_MAX_TEXTURES; ++i)
- attr->addInt((prefix+core::stringc(i+1)).c_str(), material.TextureLayer[i].AnisotropicFilter);
- prefix="TextureWrapU";
- for (i=0; i<MATERIAL_MAX_TEXTURES; ++i)
- attr->addEnum((prefix+core::stringc(i+1)).c_str(), material.TextureLayer[i].TextureWrapU, aTextureClampNames);
- prefix="TextureWrapV";
- for (i=0; i<MATERIAL_MAX_TEXTURES; ++i)
- attr->addEnum((prefix+core::stringc(i+1)).c_str(), material.TextureLayer[i].TextureWrapV, aTextureClampNames);
- prefix="TextureWrapW";
- for (i=0; i<MATERIAL_MAX_TEXTURES; ++i)
- attr->addEnum((prefix+core::stringc(i+1)).c_str(), material.TextureLayer[i].TextureWrapW, aTextureClampNames);
- prefix="LODBias";
- for (i=0; i<MATERIAL_MAX_TEXTURES; ++i)
- attr->addInt((prefix+core::stringc(i+1)).c_str(), material.TextureLayer[i].LODBias);
-
- return attr;
-}
-
-
-//! Fills an SMaterial structure from attributes.
-void CNullDriver::fillMaterialStructureFromAttributes(video::SMaterial& outMaterial, io::IAttributes* attr)
-{
- outMaterial.MaterialType = video::EMT_SOLID;
-
- core::stringc name = attr->getAttributeAsString("Type");
-
- u32 i;
-
- for ( i=0; i < MaterialRenderers.size(); ++i)
- if ( name == MaterialRenderers[i].Name )
- {
- outMaterial.MaterialType = (video::E_MATERIAL_TYPE)i;
- break;
- }
-
- outMaterial.AmbientColor = attr->getAttributeAsColor("Ambient", outMaterial.AmbientColor);
- outMaterial.DiffuseColor = attr->getAttributeAsColor("Diffuse", outMaterial.DiffuseColor);
- outMaterial.EmissiveColor = attr->getAttributeAsColor("Emissive", outMaterial.EmissiveColor);
- outMaterial.SpecularColor = attr->getAttributeAsColor("Specular", outMaterial.SpecularColor);
-
- outMaterial.Shininess = attr->getAttributeAsFloat("Shininess", outMaterial.Shininess);
- outMaterial.MaterialTypeParam = attr->getAttributeAsFloat("Param1", outMaterial.MaterialTypeParam);
- outMaterial.MaterialTypeParam2 = attr->getAttributeAsFloat("Param2", outMaterial.MaterialTypeParam2);
- outMaterial.Thickness = attr->getAttributeAsFloat("Thickness", outMaterial.Thickness);
-
- core::stringc prefix="Texture";
- for (i=0; i<MATERIAL_MAX_TEXTURES; ++i)
- outMaterial.setTexture(i, attr->getAttributeAsTexture((prefix+core::stringc(i+1)).c_str()));
-
- outMaterial.Wireframe = attr->getAttributeAsBool("Wireframe", outMaterial.Wireframe);
- outMaterial.PointCloud = attr->getAttributeAsBool("PointCloud", outMaterial.PointCloud);
- outMaterial.GouraudShading = attr->getAttributeAsBool("GouraudShading", outMaterial.GouraudShading);
- outMaterial.Lighting = attr->getAttributeAsBool("Lighting", outMaterial.Lighting);
-
- io::E_ATTRIBUTE_TYPE attType = attr->getAttributeType("ZWriteEnable");
- if (attType == io::EAT_BOOL ) // Before Irrlicht 1.9
- outMaterial.ZWriteEnable = attr->getAttributeAsBool("ZWriteEnable", outMaterial.ZWriteEnable != video::EZW_OFF ) ? video::EZW_AUTO : video::EZW_OFF;
- else if (attType == io::EAT_ENUM )
- outMaterial.ZWriteEnable = (video::E_ZWRITE)attr->getAttributeAsEnumeration("ZWriteEnable", video::ZWriteNames, outMaterial.ZWriteEnable);
-
- outMaterial.ZBuffer = (u8)attr->getAttributeAsInt("ZBuffer", outMaterial.ZBuffer);
- outMaterial.BackfaceCulling = attr->getAttributeAsBool("BackfaceCulling", outMaterial.BackfaceCulling);
- outMaterial.FrontfaceCulling = attr->getAttributeAsBool("FrontfaceCulling", outMaterial.FrontfaceCulling);
- outMaterial.FogEnable = attr->getAttributeAsBool("FogEnable", outMaterial.FogEnable);
- outMaterial.NormalizeNormals = attr->getAttributeAsBool("NormalizeNormals", outMaterial.NormalizeNormals);
- outMaterial.UseMipMaps = attr->getAttributeAsBool("UseMipMaps", outMaterial.UseMipMaps);
-
- outMaterial.AntiAliasing = attr->getAttributeAsInt("AntiAliasing", outMaterial.AntiAliasing);
- outMaterial.ColorMask = attr->getAttributeAsInt("ColorMask", outMaterial.ColorMask);
- outMaterial.ColorMaterial = attr->getAttributeAsInt("ColorMaterial", outMaterial.ColorMaterial);
- outMaterial.BlendOperation = (video::E_BLEND_OPERATION)attr->getAttributeAsInt("BlendOperation", outMaterial.BlendOperation);
- outMaterial.BlendFactor = attr->getAttributeAsFloat("BlendFactor", outMaterial.BlendFactor);
- outMaterial.PolygonOffsetFactor = attr->getAttributeAsInt("PolygonOffsetFactor", outMaterial.PolygonOffsetFactor);
- outMaterial.PolygonOffsetDirection = (video::E_POLYGON_OFFSET)attr->getAttributeAsEnumeration("PolygonOffsetDirection", video::PolygonOffsetDirectionNames, outMaterial.PolygonOffsetDirection);
- outMaterial.PolygonOffsetDepthBias = attr->getAttributeAsFloat("PolygonOffsetDepthBias", outMaterial.PolygonOffsetDepthBias);
- outMaterial.PolygonOffsetSlopeScale = attr->getAttributeAsFloat("PolygonOffsetSlopeScale", outMaterial.PolygonOffsetSlopeScale);
-
- prefix = "BilinearFilter";
- if (attr->existsAttribute(prefix.c_str())) // legacy
- outMaterial.setFlag(EMF_BILINEAR_FILTER, attr->getAttributeAsBool(prefix.c_str()));
- else
- for (i=0; i<MATERIAL_MAX_TEXTURES; ++i)
- outMaterial.TextureLayer[i].BilinearFilter = attr->getAttributeAsBool((prefix+core::stringc(i+1)).c_str(), outMaterial.TextureLayer[i].BilinearFilter);
-
- prefix = "TrilinearFilter";
- if (attr->existsAttribute(prefix.c_str())) // legacy
- outMaterial.setFlag(EMF_TRILINEAR_FILTER, attr->getAttributeAsBool(prefix.c_str()));
- else
- for (i=0; i<MATERIAL_MAX_TEXTURES; ++i)
- outMaterial.TextureLayer[i].TrilinearFilter = attr->getAttributeAsBool((prefix+core::stringc(i+1)).c_str(), outMaterial.TextureLayer[i].TrilinearFilter);
-
- prefix = "AnisotropicFilter";
- if (attr->existsAttribute(prefix.c_str())) // legacy
- outMaterial.setFlag(EMF_ANISOTROPIC_FILTER, attr->getAttributeAsBool(prefix.c_str()));
- else
- for (i=0; i<MATERIAL_MAX_TEXTURES; ++i)
- outMaterial.TextureLayer[i].AnisotropicFilter = attr->getAttributeAsInt((prefix+core::stringc(i+1)).c_str(), outMaterial.TextureLayer[i].AnisotropicFilter);
-
- prefix = "TextureWrap";
- if (attr->existsAttribute(prefix.c_str())) // legacy
- {
- for (i=0; i<MATERIAL_MAX_TEXTURES; ++i)
- {
- outMaterial.TextureLayer[i].TextureWrapU = (E_TEXTURE_CLAMP)attr->getAttributeAsEnumeration((prefix+core::stringc(i+1)).c_str(), aTextureClampNames);
- outMaterial.TextureLayer[i].TextureWrapV = outMaterial.TextureLayer[i].TextureWrapU;
- outMaterial.TextureLayer[i].TextureWrapW = outMaterial.TextureLayer[i].TextureWrapW;
- }
- }
- else
- {
- for (i=0; i<MATERIAL_MAX_TEXTURES; ++i)
- {
- outMaterial.TextureLayer[i].TextureWrapU = (E_TEXTURE_CLAMP)attr->getAttributeAsEnumeration((prefix+"U"+core::stringc(i+1)).c_str(), aTextureClampNames, outMaterial.TextureLayer[i].TextureWrapU);
- outMaterial.TextureLayer[i].TextureWrapV = (E_TEXTURE_CLAMP)attr->getAttributeAsEnumeration((prefix+"V"+core::stringc(i+1)).c_str(), aTextureClampNames, outMaterial.TextureLayer[i].TextureWrapV);
- outMaterial.TextureLayer[i].TextureWrapW = (E_TEXTURE_CLAMP)attr->getAttributeAsEnumeration((prefix+"W"+core::stringc(i+1)).c_str(), aTextureClampNames, outMaterial.TextureLayer[i].TextureWrapW);
- }
- }
-
- prefix="LODBias";
- for (i=0; i<MATERIAL_MAX_TEXTURES; ++i)
- outMaterial.TextureLayer[i].LODBias = attr->getAttributeAsInt((prefix+core::stringc(i+1)).c_str(), outMaterial.TextureLayer[i].LODBias);
-}
-
//! Returns driver and operating system specific data about the IVideoDriver.
const SExposedVideoData& CNullDriver::getExposedVideoData()
|