From bb5eb07c7588940de82bfd621c5e328f58d07ee4 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Tue, 3 Mar 2009 03:06:56 +0000 Subject: [PATCH] fixed bug in material definitions, added them to cyls.fart, they are working now! git-svn-id: svn://anubis/fart/trunk@179 7f9b0f55-74a9-4bce-be96-3c2cd072584d --- .todo | 1 - main/Scene-load.cc | 1 + parser/parser.yy | 6 +++--- scenes/cyls.fart | 46 ++++++++++++++++++++++++++++++++++++++++------ 4 files changed, 44 insertions(+), 10 deletions(-) diff --git a/.todo b/.todo index 92a6ac7..183e490 100644 --- a/.todo +++ b/.todo @@ -1,7 +1,6 @@ FART To-Do List =============== - Make verbose default -- Material definitions - Recurse for reflection - Continue for transparency - Scan for cameras before scene items diff --git a/main/Scene-load.cc b/main/Scene-load.cc index 48f9c73..228e36e 100644 --- a/main/Scene-load.cc +++ b/main/Scene-load.cc @@ -193,6 +193,7 @@ void Scene::processMaterialDefinition(refptr node) m_materials.find(node->getString()); if ( it == m_materials.end() ) { + cout << "Creating material " << node->getString() << endl; m_materials[node->getString()] = processMaterial(node); } else diff --git a/parser/parser.yy b/parser/parser.yy index c409790..826ac51 100644 --- a/parser/parser.yy +++ b/parser/parser.yy @@ -239,9 +239,9 @@ material_item: COLOR vector { } ; -material_definition: MATERIAL IDENTIFIER LCURLY material_items RCURLY { - $$ = new MaterialDefinitionNode($2->getString()); - $$->addChildren($3); +material_definition: DEFINE MATERIAL IDENTIFIER LCURLY material_items RCURLY { + $$ = new MaterialDefinitionNode($3->getString()); + $$->addChildren($5); } ; diff --git a/scenes/cyls.fart b/scenes/cyls.fart index 1eff020..da5c367 100644 --- a/scenes/cyls.fart +++ b/scenes/cyls.fart @@ -20,6 +20,11 @@ scene position <3, -8, 5> } + define material cyan + { + color <0, 1, 1> + } + plane { position <0, 0, 1>, 0 @@ -39,11 +44,40 @@ scene color <1.0, 0.6, 0> } } - cyl { size <0.2, 0, 0.3> translate <0, 0, 0.3> } - cyl { size <0.2, 0, 0.3> rotate 90, <1, 0, 0> translate <0, 0, 0.3> } - cyl { size <0.2, 0, 0.3> rotate -90, <1, 0, 0> translate <0, 0, 0.3> } - cyl { size <0.2, 0, 0.3> rotate 180, <1, 0, 0> translate <0, 0, 0.3> } - cyl { size <0.2, 0, 0.3> rotate 90, <0, 1, 0> translate <0, 0, 0.3> } - cyl { size <0.2, 0, 0.3> rotate -90, <0, 1, 0> translate <0, 0, 0.3> } + cyl { + size <0.2, 0, 0.3> + translate <0, 0, 0.3> + material cyan + } + cyl { + size <0.2, 0, 0.3> + rotate 90, <1, 0, 0> + translate <0, 0, 0.3> + material cyan + } + cyl { + size <0.2, 0, 0.3> + rotate -90, <1, 0, 0> + translate <0, 0, 0.3> + material cyan + } + cyl { + size <0.2, 0, 0.3> + rotate 180, <1, 0, 0> + translate <0, 0, 0.3> + material cyan + } + cyl { + size <0.2, 0, 0.3> + rotate 90, <0, 1, 0> + translate <0, 0, 0.3> + material cyan + } + cyl { + size <0.2, 0, 0.3> + rotate -90, <0, 1, 0> + translate <0, 0, 0.3> + material cyan + } } }