#include #include #include #include #include #include STD_MTL_NAMESPACE_BEGIN namespace { using MaterialFileParse=io::TextInputStream::ParseCallback; enum class MaterialFileState { None, Material, MaterialInstance, MaterialInstanceCode, Vertex, VertexInput, VertexOutput, VertexCode, Geometry, GeometryInput, GeometryOutput, GeometryCode, Fragment, FragmentInput, FragmentOutput, FragmentCode, ENUM_CLASS_RANGE(None,FragmentCode) };//enum class State constexpr const char *StateNameList[]= { "Material", "MaterialInstance", "Vertex", "Geometry", "Fragment", }; const MaterialFileState GetMaterialFileState(const char *str) { for(int i=0;iOnLine(text,len); return(true); } }; }//namespace MaterialFile bool LoadMaterialFromFile(const AnsiString &mtl_filename) { const OSString mtl_osfn=ToOSString(mtl_filename+".mtl"); const OSString mtl_os_filename=filesystem::MergeFilename(OS_TEXT("ShaderLibrary"),mtl_osfn); if(!filesystem::FileExist(mtl_os_filename)) return(false); io::OpenFileInputStream fis(mtl_os_filename); if(!fis) return(false); MaterialTextParse mtp; io::TextInputStream tis(fis,0); tis.SetParseCallback(&mtp); return tis.Run(); } MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &name,const MaterialCreateConfig *cfg) { return nullptr; } //MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &name,const Material2DCreateConfig *cfg) //{ // Std2DMaterial *mtl=new Std2DMaterial(cfg); // // //} // //MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &name,const Material3DCreateConfig *cfg) //{ //} STD_MTL_NAMESPACE_END