used Block instead of State in MaterialFileLoader.cpp

This commit is contained in:
HuYingzhuo(hugo/hyzboy) 2023-10-09 18:02:03 +08:00
parent 237c1a469b
commit 695f1a22a8

View File

@ -13,7 +13,7 @@ namespace
{ {
using MaterialFileParse=io::TextInputStream::ParseCallback<char>; using MaterialFileParse=io::TextInputStream::ParseCallback<char>;
enum class MaterialFileState enum class MaterialFileBlock
{ {
None, None,
@ -28,16 +28,16 @@ namespace
ENUM_CLASS_RANGE(None,Fragment) ENUM_CLASS_RANGE(None,Fragment)
};//enum class State };//enum class State
struct MaterialFileStateInfo struct MaterialFileBlockInfo
{ {
const char *name; const char *name;
const int len; const int len;
MaterialFileState state; MaterialFileBlock state;
}; };
#define MFS(name) {#name,sizeof(#name)-1,MaterialFileState::name}, #define MFS(name) {#name,sizeof(#name)-1,MaterialFileBlock::name},
constexpr const MaterialFileStateInfo state_list[]= constexpr const MaterialFileBlockInfo material_file_block_info_list[]=
{ {
MFS(Material) MFS(Material)
MFS(MaterialInstance) MFS(MaterialInstance)
@ -49,23 +49,23 @@ namespace
#undef MFS #undef MFS
const MaterialFileState GetMaterialFileState(const char *str,const int len) const MaterialFileBlock GetMaterialFileState(const char *str,const int len)
{ {
for(const MaterialFileStateInfo &info:state_list) for(const MaterialFileBlockInfo &info:material_file_block_info_list)
if(len==info.len) if(len==info.len)
if(hgl::stricmp(str,info.name,len)==0) if(hgl::stricmp(str,info.name,len)==0)
return info.state; return info.state;
return MaterialFileState::None; return MaterialFileBlock::None;
} }
struct MaterialStateParse:public MaterialFileParse struct MaterialFileBlockParse:public MaterialFileParse
{ {
MaterialFileState state; MaterialFileBlock state;
MaterialStateParse() MaterialFileBlockParse()
{ {
state=MaterialFileState::None; state=MaterialFileBlock::None;
} }
bool OnLine(const char *text,const int len) override bool OnLine(const char *text,const int len) override
@ -75,7 +75,7 @@ namespace
return(true); return(true);
} }
};//struct MaterialStateParse };//struct MaterialFileBlockParse
struct CodeParse:public MaterialFileParse struct CodeParse:public MaterialFileParse
{ {
@ -198,7 +198,7 @@ namespace
return(true); return(true);
} }
struct VertexInputStateParse:public MaterialFileParse struct VertexInputBlockParse:public MaterialFileParse
{ {
List<UniformAttrib> input_list; List<UniformAttrib> input_list;
@ -216,9 +216,9 @@ namespace
return(true); return(true);
} }
};//struct VertexInputStateParse };//struct VertexInputBlockParse
struct ShaderStateParse:public MaterialFileParse struct ShaderBlockParse:public MaterialFileParse
{ {
bool output=false; bool output=false;
List<UniformAttrib> output_list; List<UniformAttrib> output_list;
@ -267,9 +267,9 @@ namespace
return(true); return(true);
} }
};//struct ShaderStateParse };//struct ShaderBlockParse
struct GeometryShaderStateParse:public ShaderStateParse struct GeometryShaderBlockParse:public ShaderBlockParse
{ {
Prim input_prim; Prim input_prim;
Prim output_prim; Prim output_prim;
@ -330,17 +330,17 @@ namespace
return(true); return(true);
} }
if(!ShaderStateParse::OnLine(text,len)) if(!ShaderBlockParse::OnLine(text,len))
return(false); return(false);
return(true); return(true);
} }
};//struct GeometryShaderStateParse };//struct GeometryShaderBlockParse
struct MaterialTextParse:public MaterialFileParse struct MaterialTextParse:public MaterialFileParse
{ {
MaterialFileState state; MaterialFileBlock state;
MaterialFileParse *parse; MaterialFileParse *parse;
@ -348,7 +348,7 @@ namespace
MaterialTextParse() MaterialTextParse()
{ {
state=MaterialFileState::None; state=MaterialFileBlock::None;
parse=nullptr; parse=nullptr;
} }
@ -370,14 +370,14 @@ namespace
switch(state) switch(state)
{ {
case MaterialFileState::Material: parse=new MaterialStateParse;break; case MaterialFileBlock::Material: parse=new MaterialFileBlockParse;break;
case MaterialFileState::MaterialInstance: parse=new MaterialInstanceStateParse;break; case MaterialFileBlock::MaterialInstance: parse=new MaterialInstanceStateParse;break;
case MaterialFileState::VertexInput: parse=new VertexInputStateParse;break; case MaterialFileBlock::VertexInput: parse=new VertexInputBlockParse;break;
case MaterialFileState::Vertex: case MaterialFileBlock::Vertex:
case MaterialFileState::Fragment: parse=new ShaderStateParse;break; case MaterialFileBlock::Fragment: parse=new ShaderBlockParse;break;
case MaterialFileState::Geometry: parse=new GeometryShaderStateParse;break; case MaterialFileBlock::Geometry: parse=new GeometryShaderBlockParse;break;
default: state=MaterialFileState::None;return(false); default: state=MaterialFileBlock::None;return(false);
} }
return(true); return(true);