From b50c4de1bca23c2068819b9b1f492f934bfe9dcd Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Thu, 5 Mar 2009 20:04:13 +0000 Subject: [PATCH] added parser, nodes, Scene-load support for transparency in materials git-svn-id: svn://anubis/fart/trunk@186 7f9b0f55-74a9-4bce-be96-3c2cd072584d --- main/Scene-load.cc | 4 ++++ parser/nodes.h | 6 ++++++ parser/parser.lex | 1 + parser/parser.yy | 4 ++++ 4 files changed, 15 insertions(+) diff --git a/main/Scene-load.cc b/main/Scene-load.cc index 48f9c73..e068100 100644 --- a/main/Scene-load.cc +++ b/main/Scene-load.cc @@ -250,6 +250,10 @@ refptr Scene::processMaterial(refptr node) { material->setShininess((*it)->getNumber()); } + else if ( typeid(**it) == typeid(TransparencyNode) ) + { + material->setTransparency((*it)->getNumber()); + } } return material; diff --git a/parser/nodes.h b/parser/nodes.h index 12b9ea6..418bd99 100644 --- a/parser/nodes.h +++ b/parser/nodes.h @@ -284,6 +284,12 @@ class TranslateBlockNode : public TranslateNode TranslateBlockNode(refptr vector) : TranslateNode(vector) {} }; +class TransparencyNode : public NumberNode +{ + public: + TransparencyNode(double d) : NumberNode(d) {} +}; + class UnionNode : public Node { public: diff --git a/parser/parser.lex b/parser/parser.lex index 9a57e1d..37a2f6d 100644 --- a/parser/parser.lex +++ b/parser/parser.lex @@ -66,6 +66,7 @@ specular return SPECULAR; sphere return SPHERE; subtract return SUBTRACT; translate return TRANSLATE; +transparency return TRANSPARENCY; union return UNION; up return UP; vfov return VFOV; diff --git a/parser/parser.yy b/parser/parser.yy index 826ac51..a134125 100644 --- a/parser/parser.yy +++ b/parser/parser.yy @@ -85,6 +85,7 @@ static refptr parsed_scene_node; %token SPHERE; %token SUBTRACT; %token TRANSLATE; +%token TRANSPARENCY; %token UNION; %token UP; %token VFOV; @@ -237,6 +238,9 @@ material_item: COLOR vector { | SHININESS number { $$ = new ShininessNode($2->getNumber()); } + | TRANSPARENCY number { + $$ = new TransparencyNode($2->getNumber()); + } ; material_definition: DEFINE MATERIAL IDENTIFIER LCURLY material_items RCURLY {