diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2014-06-06 14:14:00 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2014-06-06 14:14:00 -0400 |
commit | 708954192219feead526f84c0c8bdb29088aeae0 (patch) | |
tree | bfe241506d38559533016b92136f8d924dfe6fee /libdimension/object.c | |
parent | c2066966bbf74062c18e8a324996bf88c769362d (diff) | |
download | dimension-708954192219feead526f84c0c8bdb29088aeae0.tar.xz |
objects: Use a vtable to shrink object structs.
Diffstat (limited to 'libdimension/object.c')
-rw-r--r-- | libdimension/object.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/libdimension/object.c b/libdimension/object.c index 126f41a..3eeb4eb 100644 --- a/libdimension/object.c +++ b/libdimension/object.c @@ -39,16 +39,14 @@ dmnsn_new_object(dmnsn_pool *pool) void dmnsn_init_object(dmnsn_object *object) { - object->texture = NULL; - object->interior = NULL; - object->trans = dmnsn_identity_matrix(); + object->vtable = NULL; + object->texture = NULL; + object->interior = NULL; + object->trans = dmnsn_identity_matrix(); object->intrinsic_trans = dmnsn_identity_matrix(); - object->children = NULL; - object->split_children = false; - object->intersection_fn = NULL; - object->inside_fn = NULL; - object->initialize_fn = NULL; - object->initialized = false; + object->children = NULL; + object->split_children = false; + object->initialized = false; } /** Recursively initialize objects. */ @@ -88,8 +86,8 @@ dmnsn_object_initialize_recursive(dmnsn_object *object, } /* Initialization callback */ - if (object->initialize_fn) { - object->initialize_fn(object); + if (object->vtable->initialize_fn) { + object->vtable->initialize_fn(object); } /* Precalculate more object values */ |