diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2014-06-04 16:16:03 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2014-06-04 16:16:03 -0400 |
commit | 16ac456e590e11bc2028a697c586a6c7d00fc41a (patch) | |
tree | b961eca096657b5eec2a949e04b1f3fac34dab82 /libdimension/csg.c | |
parent | 270a53ef8d4d009dd79605058b780dc6d1f2ed1a (diff) | |
download | dimension-16ac456e590e11bc2028a697c586a6c7d00fc41a.tar.xz |
csg: Avoid copying the child array for unions.
Diffstat (limited to 'libdimension/csg.c')
-rw-r--r-- | libdimension/csg.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/libdimension/csg.c b/libdimension/csg.c index 5a7534b..375ac2c 100644 --- a/libdimension/csg.c +++ b/libdimension/csg.c @@ -75,7 +75,7 @@ dmnsn_csg_union_cleanup(void *ptr) /* Bulk-load a union */ dmnsn_object * -dmnsn_new_csg_union(dmnsn_pool *pool, const dmnsn_array *objects) +dmnsn_new_csg_union(dmnsn_pool *pool, dmnsn_array *objects) { dmnsn_csg_union *csg = DMNSN_PALLOC_TIDY(pool, dmnsn_csg_union, dmnsn_csg_union_cleanup); csg->bvh = NULL; @@ -83,10 +83,7 @@ dmnsn_new_csg_union(dmnsn_pool *pool, const dmnsn_array *objects) dmnsn_object *object = &csg->object; dmnsn_init_object(pool, object); - object->children = DMNSN_PALLOC_ARRAY(pool, dmnsn_object *); - DMNSN_ARRAY_FOREACH (dmnsn_object **, child, objects) { - dmnsn_array_push(object->children, child); - } + object->children = objects; object->split_children = true; object->intersection_fn = dmnsn_csg_union_intersection_fn; object->inside_fn = dmnsn_csg_union_inside_fn; |