mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-22 00:55:45 +00:00
Fix issues with technique parser
This commit is contained in:
parent
4a52f3304e
commit
bdb782a679
@ -44,6 +44,7 @@ namespace IW4
|
|||||||
explicit TechniqueCreator(IAssetLoadingManager* manager)
|
explicit TechniqueCreator(IAssetLoadingManager* manager)
|
||||||
: m_manager(manager)
|
: m_manager(manager)
|
||||||
{
|
{
|
||||||
|
m_passes.emplace_back();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AcceptNextPass() override
|
void AcceptNextPass() override
|
||||||
@ -88,22 +89,22 @@ namespace IW4
|
|||||||
|
|
||||||
bool AcceptShaderCodeArgument(techset::ShaderSelector shader, techset::ShaderArgument shaderArgument, techset::ShaderArgumentCodeSource source, std::string& errorMessage) override
|
bool AcceptShaderCodeArgument(techset::ShaderSelector shader, techset::ShaderArgument shaderArgument, techset::ShaderArgumentCodeSource source, std::string& errorMessage) override
|
||||||
{
|
{
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AcceptShaderLiteralArgument(techset::ShaderSelector shader, techset::ShaderArgument shaderArgument, techset::ShaderArgumentLiteralSource source, std::string& errorMessage) override
|
bool AcceptShaderLiteralArgument(techset::ShaderSelector shader, techset::ShaderArgument shaderArgument, techset::ShaderArgumentLiteralSource source, std::string& errorMessage) override
|
||||||
{
|
{
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AcceptShaderMaterialArgument(techset::ShaderSelector shader, techset::ShaderArgument shaderArgument, techset::ShaderArgumentMaterialSource source, std::string& errorMessage) override
|
bool AcceptShaderMaterialArgument(techset::ShaderSelector shader, techset::ShaderArgument shaderArgument, techset::ShaderArgumentMaterialSource source, std::string& errorMessage) override
|
||||||
{
|
{
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AcceptVertexStreamRouting(const std::string& destination, const std::string& source, std::string& errorMessage) override
|
bool AcceptVertexStreamRouting(const std::string& destination, const std::string& source, std::string& errorMessage) override
|
||||||
{
|
{
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -99,6 +99,7 @@ namespace techset
|
|||||||
const SimpleMatcherFactory create(this);
|
const SimpleMatcherFactory create(this);
|
||||||
|
|
||||||
AddMatchers({
|
AddMatchers({
|
||||||
|
create.Identifier().Capture(CAPTURE_FIRST_TOKEN).NoConsume(),
|
||||||
create.Identifier().Capture(CAPTURE_SHADER_ARGUMENT),
|
create.Identifier().Capture(CAPTURE_SHADER_ARGUMENT),
|
||||||
create.Optional(create.And({
|
create.Optional(create.And({
|
||||||
create.Char('['),
|
create.Char('['),
|
||||||
@ -170,7 +171,6 @@ namespace techset
|
|||||||
void ProcessMatch(TechniqueParserState* state, SequenceResult<SimpleParserValue>& result) const override
|
void ProcessMatch(TechniqueParserState* state, SequenceResult<SimpleParserValue>& result) const override
|
||||||
{
|
{
|
||||||
assert(state->m_in_shader == true);
|
assert(state->m_in_shader == true);
|
||||||
state->m_in_shader = false;
|
|
||||||
|
|
||||||
const auto& shaderArgumentNameToken = result.NextCapture(CAPTURE_SHADER_ARGUMENT);
|
const auto& shaderArgumentNameToken = result.NextCapture(CAPTURE_SHADER_ARGUMENT);
|
||||||
|
|
||||||
@ -200,7 +200,8 @@ namespace techset
|
|||||||
const std::vector<TechniqueParser::sequence_t*>& TechniqueShaderScopeSequences::GetSequences()
|
const std::vector<TechniqueParser::sequence_t*>& TechniqueShaderScopeSequences::GetSequences()
|
||||||
{
|
{
|
||||||
static std::vector<TechniqueParser::sequence_t*> tests({
|
static std::vector<TechniqueParser::sequence_t*> tests({
|
||||||
new SequenceEndShader()
|
new SequenceEndShader(),
|
||||||
|
new SequenceShaderArgument()
|
||||||
});
|
});
|
||||||
|
|
||||||
return tests;
|
return tests;
|
||||||
|
@ -23,7 +23,7 @@ bool TechniqueFileReader::ReadTechniqueDefinition() const
|
|||||||
lexerConfig.m_emit_new_line_tokens = false;
|
lexerConfig.m_emit_new_line_tokens = false;
|
||||||
lexerConfig.m_read_strings = true;
|
lexerConfig.m_read_strings = true;
|
||||||
lexerConfig.m_read_integer_numbers = true;
|
lexerConfig.m_read_integer_numbers = true;
|
||||||
lexerConfig.m_read_floating_point_numbers = true;
|
lexerConfig.m_read_floating_point_numbers = false;
|
||||||
const auto lexer = std::make_unique<SimpleLexer>(m_comment_proxy.get(), std::move(lexerConfig));
|
const auto lexer = std::make_unique<SimpleLexer>(m_comment_proxy.get(), std::move(lexerConfig));
|
||||||
|
|
||||||
const auto parser = std::make_unique<TechniqueParser>(lexer.get(), m_acceptor);
|
const auto parser = std::make_unique<TechniqueParser>(lexer.get(), m_acceptor);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user