OpenMW
components/nifogre/material.hpp
Go to the documentation of this file.
00001 #ifndef COMPONENTS_NIFOGRE_MATERIAL_HPP
00002 #define COMPONENTS_NIFOGRE_MATERIAL_HPP
00003 
00004 #include <iostream>
00005 #include <string>
00006 #include <map>
00007 #include <cassert>
00008 
00009 #include <OgreString.h>
00010 
00011 namespace Nif
00012 {
00013     class ShapeData;
00014     class NiTexturingProperty;
00015     class NiMaterialProperty;
00016     class NiAlphaProperty;
00017     class NiVertexColorProperty;
00018     class NiZBufferProperty;
00019     class NiSpecularProperty;
00020     class NiWireframeProperty;
00021 }
00022 
00023 namespace NifOgre
00024 {
00025 
00026 class NIFMaterialLoader {
00027     static void warn(const std::string &msg)
00028     {
00029         std::cerr << "NIFMaterialLoader: Warn: " << msg << std::endl;
00030     }
00031 
00032     static void fail(const std::string &msg)
00033     {
00034         std::cerr << "NIFMaterialLoader: Fail: "<< msg << std::endl;
00035         abort();
00036     }
00037 
00038     static std::map<size_t,std::string> sMaterialMap;
00039 
00040 public:
00041     static std::string findTextureName(const std::string &filename);
00042 
00043     static Ogre::String getMaterial(const Nif::ShapeData *shapedata,
00044                                     const Ogre::String &name, const Ogre::String &group,
00045                                     const Nif::NiTexturingProperty *texprop,
00046                                     const Nif::NiMaterialProperty *matprop,
00047                                     const Nif::NiAlphaProperty *alphaprop,
00048                                     const Nif::NiVertexColorProperty *vertprop,
00049                                     const Nif::NiZBufferProperty *zprop,
00050                                     const Nif::NiSpecularProperty *specprop,
00051                                     const Nif::NiWireframeProperty *wireprop,
00052                                     bool &needTangents);
00053 };
00054 
00055 }
00056 
00057 #endif