X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=laserbrain_demo;a=blobdiff_plain;f=src%2Fblob_exhibit.cc;h=c92ac7acf3c80e7acb802fe1d9eeb8f58f8d0dac;hp=58522d9303997fa74eab8e3ad94d1ea305b62644;hb=fa954e4716d12939552b592f46a4e08405ecfb24;hpb=ad052fc67fe4e76d2f4a01b2381a738da1708cdb diff --git a/src/blob_exhibit.cc b/src/blob_exhibit.cc index 58522d9..c92ac7a 100644 --- a/src/blob_exhibit.cc +++ b/src/blob_exhibit.cc @@ -23,6 +23,7 @@ static Metaball def_mball_data[] = { }; struct BlobPriv { + AABox vol; metasurface *msurf; Metaball mballs[NUM_MBALLS]; Texture *tex; @@ -34,6 +35,7 @@ BlobExhibit::BlobExhibit() for(int i=0; imballs[i] = def_mball_data[i]; } + priv->vol = AABox(Vec3(-3.5, -3.5, -3.5), Vec3(3.5, 3.5, 3.5)); } BlobExhibit::~BlobExhibit() @@ -49,7 +51,8 @@ bool BlobExhibit::init() } msurf_set_threshold(priv->msurf, 8); msurf_set_inside(priv->msurf, MSURF_GREATER); - msurf_set_bounds(priv->msurf, -3.5, -3.5, -3.5, 3.5, 3.5, 3.5); + msurf_set_bounds(priv->msurf, priv->vol.min.x, priv->vol.min.y, priv->vol.min.z, + priv->vol.max.x, priv->vol.max.y, priv->vol.max.z); msurf_enable(priv->msurf, MSURF_NORMALIZE); priv->tex = texman.get_texture("data/sphmap.jpg"); @@ -72,6 +75,10 @@ void BlobExhibit::update(float dt) float xmin, xmax, ymin, ymax, zmin, zmax; int xres, yres, zres; + if(!msurf_voxels(priv->msurf)) { + return; + } + msurf_get_bounds(priv->msurf, &xmin, &ymin, &zmin, &xmax, &ymax, &zmax); msurf_get_resolution(priv->msurf, &xres, &yres, &zres); @@ -86,10 +93,6 @@ void BlobExhibit::update(float dt) priv->mballs[i].pos.z = -cos(t) * priv->mballs[i].path_scale.z + priv->mballs[i].path_offset.z; } - if(!msurf_voxels(priv->msurf)) { - return; - } - float max_energy = 0.0f; #pragma omp parallel for @@ -183,3 +186,10 @@ void BlobExhibit::draw() const glPopAttrib(); } + +const AABox &BlobExhibit::get_aabox() const +{ + Box box = Box(priv->vol, node->get_matrix()); + calc_bounding_aabox(&aabb, &box); + return aabb; +}