summaryrefslogtreecommitdiffstats
path: root/libdimension/object.c
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@gmail.com>2010-06-05 23:46:29 -0600
committerTavian Barnes <tavianator@gmail.com>2010-06-05 23:55:21 -0600
commit6681e5e78772be7168b5ed2a5688d2e89ee4f5d5 (patch)
treeffd8c5fef0a6c5db47b0f635b6e1ae5719861f17 /libdimension/object.c
parent4a2dd35a34d456b9164e90b4fb1a06b1d009869f (diff)
downloaddimension-6681e5e78772be7168b5ed2a5688d2e89ee4f5d5.tar.xz
Add children to dmnsn_objects, which enables splitting unions.
Also, use PR-trees for unions internally.
Diffstat (limited to 'libdimension/object.c')
-rw-r--r--libdimension/object.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/libdimension/object.c b/libdimension/object.c
index a714f6e..d87eb12 100644
--- a/libdimension/object.c
+++ b/libdimension/object.c
@@ -40,6 +40,7 @@ dmnsn_new_object()
object->texture = NULL;
object->interior = NULL;
object->trans = dmnsn_identity_matrix();
+ object->children = dmnsn_new_array(sizeof(dmnsn_object *));
object->init_fn = NULL;
object->free_fn = NULL;
return object;
@@ -50,6 +51,10 @@ void
dmnsn_delete_object(dmnsn_object *object)
{
if (object) {
+ DMNSN_ARRAY_FOREACH (dmnsn_object **, child, object->children) {
+ dmnsn_delete_object(*child);
+ }
+ dmnsn_delete_array(object->children);
dmnsn_delete_interior(object->interior);
dmnsn_delete_texture(object->texture);
if (object->free_fn) {