summaryrefslogtreecommitdiffstats
path: root/dimension
diff options
context:
space:
mode:
Diffstat (limited to 'dimension')
-rw-r--r--dimension/common.rules5
-rw-r--r--dimension/realize.c12
2 files changed, 14 insertions, 3 deletions
diff --git a/dimension/common.rules b/dimension/common.rules
index 7b4c609..cc7411f 100644
--- a/dimension/common.rules
+++ b/dimension/common.rules
@@ -150,9 +150,8 @@ OBJECT_MODIFIERS: /* empty */ {
OBJECT_MODIFIER: TRANSFORMATION
| TEXTURE
- | PIGMENT {
- $$ = dmnsn_new_astnode1(DMNSN_AST_TEXTURE, @$, $1);
- }
+ | PIGMENT
+ | FINISH
| INTERIOR
;
diff --git a/dimension/realize.c b/dimension/realize.c
index b20ec9f..e5dfcb4 100644
--- a/dimension/realize.c
+++ b/dimension/realize.c
@@ -590,6 +590,18 @@ dmnsn_realize_object_modifiers(dmnsn_astnode astnode, dmnsn_object *object)
dmnsn_delete_texture(object->texture);
object->texture = dmnsn_realize_texture(modifier);
break;
+ case DMNSN_AST_PIGMENT:
+ if (!object->texture)
+ object->texture = dmnsn_new_texture();
+ dmnsn_delete_pigment(object->texture->pigment);
+ object->texture->pigment = dmnsn_realize_pigment(modifier);
+ break;
+ case DMNSN_AST_FINISH:
+ if (!object->texture)
+ object->texture = dmnsn_new_texture();
+ dmnsn_delete_finish(object->texture->finish);
+ object->texture->finish = dmnsn_realize_finish(modifier);
+ break;
case DMNSN_AST_INTERIOR:
dmnsn_delete_interior(object->interior);