From 708954192219feead526f84c0c8bdb29088aeae0 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Fri, 6 Jun 2014 14:14:00 -0400 Subject: objects: Use a vtable to shrink object structs. --- libdimension/cube.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'libdimension/cube.c') diff --git a/libdimension/cube.c b/libdimension/cube.c index 8a1a503..d4c9d5b 100644 --- a/libdimension/cube.c +++ b/libdimension/cube.c @@ -129,13 +129,18 @@ dmnsn_cube_inside_fn(const dmnsn_object *cube, dmnsn_vector point) && point.z > -1.0 && point.z < 1.0; } +/** Cube vtable. */ +static const dmnsn_object_vtable dmnsn_cube_vtable = { + .intersection_fn = dmnsn_cube_intersection_fn, + .inside_fn = dmnsn_cube_inside_fn, +}; + /* Allocate a new cube object */ dmnsn_object * dmnsn_new_cube(dmnsn_pool *pool) { dmnsn_object *cube = dmnsn_new_object(pool); - cube->intersection_fn = dmnsn_cube_intersection_fn; - cube->inside_fn = dmnsn_cube_inside_fn; + cube->vtable = &dmnsn_cube_vtable; cube->bounding_box.min = dmnsn_new_vector(-1.0, -1.0, -1.0); cube->bounding_box.max = dmnsn_new_vector(1.0, 1.0, 1.0); return cube; -- cgit v1.2.3