Mercurial > hg > forks > gldragon
comparison dmmodel.cpp @ 33:2e85c180afdf
Add support for specifying shader file filenames in the scene for each model.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 22 Nov 2019 23:11:02 +0200 |
parents | 1215fdd0a8ab |
children | d640f2a34031 |
comparison
equal
deleted
inserted
replaced
32:1215fdd0a8ab | 33:2e85c180afdf |
---|---|
662 if (key == "model") | 662 if (key == "model") |
663 { | 663 { |
664 DMModel newmodel; | 664 DMModel newmodel; |
665 if (tokens.size() != 2) | 665 if (tokens.size() != 2) |
666 { | 666 { |
667 return dmError(info, | 667 return dmSyntaxError(info, |
668 "Keyword model expects a filename argument"); | 668 "Keyword model expects a filename argument"); |
669 } | 669 } |
670 | 670 |
671 models.push_back(newmodel); | 671 models.push_back(newmodel); |
672 model = &models.back(); | 672 model = &models.back(); |
673 model->modelFile = tokens[1]; | 673 model->modelFile = tokens[1]; |
674 info.state = 1; | 674 info.state = 1; |
675 } | |
676 else | |
677 if (info.state == 1 && (key == "shaderfile")) | |
678 { | |
679 if (tokens.size() != 3) | |
680 { | |
681 return dmSyntaxError(info, | |
682 "Keyword shaderfile expects shader type (fs, vs) and filename arguments"); | |
683 } | |
684 | |
685 std::string | |
686 &shtype = tokens[1], | |
687 &shfile = tokens[2]; | |
688 | |
689 if (shtype == "fs") | |
690 model->fragShaderFile = shfile; | |
691 else | |
692 if (shtype == "vs") | |
693 model->vertShaderFile = shfile; | |
694 else | |
695 { | |
696 return dmSyntaxError(info, | |
697 "Invalid shaderfile type '"+ shtype +"'"); | |
698 } | |
675 } | 699 } |
676 else | 700 else |
677 if (info.state == 1 && (key == "translate" || key == "rotate" || key == "scale")) | 701 if (info.state == 1 && (key == "translate" || key == "rotate" || key == "scale")) |
678 { | 702 { |
679 DMVector3 vec; | 703 DMVector3 vec; |
707 else | 731 else |
708 if (info.state == 1 && key == "shininess") | 732 if (info.state == 1 && key == "shininess") |
709 { | 733 { |
710 if (tokens.size() != 2) | 734 if (tokens.size() != 2) |
711 { | 735 { |
712 return dmError(info, | 736 return dmSyntaxError(info, |
713 "Expected argument for shininess"); | 737 "Expected argument for shininess"); |
714 } | 738 } |
715 | 739 |
716 model->shininess = std::stoi(tokens[1], 0, 0); | 740 model->shininess = std::stoi(tokens[1], 0, 0); |
717 } | 741 } |