added parser, nodes, Scene-load support for transparency in materials

git-svn-id: svn://anubis/fart/trunk@186 7f9b0f55-74a9-4bce-be96-3c2cd072584d
This commit is contained in:
Josh Holtrop 2009-03-05 20:04:13 +00:00
parent f9cf1381a6
commit b50c4de1bc
4 changed files with 15 additions and 0 deletions

View File

@ -250,6 +250,10 @@ refptr<Material> Scene::processMaterial(refptr<Node> node)
{ {
material->setShininess((*it)->getNumber()); material->setShininess((*it)->getNumber());
} }
else if ( typeid(**it) == typeid(TransparencyNode) )
{
material->setTransparency((*it)->getNumber());
}
} }
return material; return material;

View File

@ -284,6 +284,12 @@ class TranslateBlockNode : public TranslateNode
TranslateBlockNode(refptr<Vector> vector) : TranslateNode(vector) {} TranslateBlockNode(refptr<Vector> vector) : TranslateNode(vector) {}
}; };
class TransparencyNode : public NumberNode
{
public:
TransparencyNode(double d) : NumberNode(d) {}
};
class UnionNode : public Node class UnionNode : public Node
{ {
public: public:

View File

@ -66,6 +66,7 @@ specular return SPECULAR;
sphere return SPHERE; sphere return SPHERE;
subtract return SUBTRACT; subtract return SUBTRACT;
translate return TRANSLATE; translate return TRANSLATE;
transparency return TRANSPARENCY;
union return UNION; union return UNION;
up return UP; up return UP;
vfov return VFOV; vfov return VFOV;

View File

@ -85,6 +85,7 @@ static refptr<Node> parsed_scene_node;
%token SPHERE; %token SPHERE;
%token SUBTRACT; %token SUBTRACT;
%token TRANSLATE; %token TRANSLATE;
%token TRANSPARENCY;
%token UNION; %token UNION;
%token UP; %token UP;
%token VFOV; %token VFOV;
@ -237,6 +238,9 @@ material_item: COLOR vector {
| SHININESS number { | SHININESS number {
$$ = new ShininessNode($2->getNumber()); $$ = new ShininessNode($2->getNumber());
} }
| TRANSPARENCY number {
$$ = new TransparencyNode($2->getNumber());
}
; ;
material_definition: DEFINE MATERIAL IDENTIFIER LCURLY material_items RCURLY { material_definition: DEFINE MATERIAL IDENTIFIER LCURLY material_items RCURLY {