From 03750832c85bd3be29f9745f9416a47f1725ad53 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Tue, 10 Oct 2023 01:19:05 +0800 Subject: [PATCH] MaterialFileData added origin data. --- CMCore | 2 +- src/ShaderGen/MaterialFileData.h | 20 ++++++++++++++++++++ src/ShaderGen/MaterialFileLoader.cpp | 19 +++++++------------ 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/CMCore b/CMCore index 252f2f6a..70b65670 160000 --- a/CMCore +++ b/CMCore @@ -1 +1 @@ -Subproject commit 252f2f6a1f4546d84e105e9f76462576e1b26a25 +Subproject commit 70b6567029f3278692ca41c99bdf422af3365b8b diff --git a/src/ShaderGen/MaterialFileData.h b/src/ShaderGen/MaterialFileData.h index 06750422..c28a3c7c 100644 --- a/src/ShaderGen/MaterialFileData.h +++ b/src/ShaderGen/MaterialFileData.h @@ -59,11 +59,31 @@ namespace material_file struct MaterialFileData { + private: + + char * data=nullptr; + int data_length=0; + + public: + MaterialInstanceData mi{}; List vi; ObjectMap shader; + + public: + + MaterialFileData(char *d,int dl) + { + data=d; + data_length=dl; + } + + ~MaterialFileData() + { + delete[] data; + } };//struct MaterialFileData }//namespace material_file \ No newline at end of file diff --git a/src/ShaderGen/MaterialFileLoader.cpp b/src/ShaderGen/MaterialFileLoader.cpp index 319937b0..20817355 100644 --- a/src/ShaderGen/MaterialFileLoader.cpp +++ b/src/ShaderGen/MaterialFileLoader.cpp @@ -4,7 +4,6 @@ #include #include -#include #include #include"MaterialFileData.h" @@ -463,7 +462,7 @@ namespace }; }//namespace MaterialFile -MaterialFileData *LoadMaterialFromFile(const AnsiString &mtl_filename) +MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &mtl_filename) { const OSString mtl_osfn=ToOSString(mtl_filename+".mtl"); @@ -472,26 +471,22 @@ MaterialFileData *LoadMaterialFromFile(const AnsiString &mtl_filename) if(!filesystem::FileExist(mtl_os_filename)) return(nullptr); - io::OpenFileInputStream fis(mtl_os_filename); + char *data; - if(!fis) - return(nullptr); + int size=filesystem::LoadFileToMemory(mtl_os_filename,(void **)&data,true); - MaterialFileData *mfd=new MaterialFileData; + MaterialFileData mfd(data,size); - MaterialTextParse mtp(mfd); + MaterialTextParse mtp(&mfd); - io::TextInputStream tis(fis,0); + io::TextInputStream tis(data,size); tis.SetParseCallback(&mtp); if(!tis.Run()) - { - delete mfd; return nullptr; - } - return mfd; + return(nullptr); } MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &name,const MaterialCreateConfig *cfg)