diff options
Diffstat (limited to 'dimension')
-rw-r--r-- | dimension/common.rules | 5 | ||||
-rw-r--r-- | dimension/realize.c | 12 |
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); |