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 }