bool IsoSurface::work(vistle::UnstructuredGrid::const_ptr gridS, vistle::Vec<vistle::Scalar>::const_ptr dataS, vistle::DataBase::const_ptr mapdata) { const int processorType = getIntParameter("processortype"); #ifdef CUTTINGSURFACE const Scalar isoValue = 0.0; #else const Scalar isoValue = getFloatParameter("isovalue"); #endif Leveller l(isocontrol, gridS, isoValue, processorType); #ifndef CUTTINGSURFACE l.setIsoData(dataS); #endif if(mapdata){ l.addMappedData(mapdata); }; l.process(); #ifndef CUTTINGSURFACE auto minmax = dataS->getMinMax(); if (minmax.first[0] < m_min) m_min = minmax.first[0]; if (minmax.second[0] > m_max) m_max = minmax.second[0]; #endif Object::ptr result = l.result(); DataBase::ptr mapresult = l.mapresult(); if (result) { #ifndef CUTTINGSURFACE result->copyAttributes(dataS); #endif result->copyAttributes(gridS, false); if (mapdata && mapresult) { mapresult->copyAttributes(mapdata); mapresult->setGrid(result); addObject(m_dataOut, mapresult); } #ifndef CUTTINGSURFACE else { addObject(m_dataOut, result); } #endif } return true; }
bool IsoSurface::work(vistle::Object::const_ptr grid, vistle::Vec<vistle::Scalar>::const_ptr dataS, vistle::DataBase::const_ptr mapdata) { const int processorType = getIntParameter("processortype"); #ifdef CUTTINGSURFACE const Scalar isoValue = 0.0; #else const Scalar isoValue = getFloatParameter("isovalue"); #endif Leveller l(isocontrol, grid, isoValue, processorType); l.setComputeNormals(m_computeNormals->getValue()); #ifndef CUTTINGSURFACE l.setIsoData(dataS); #endif if(mapdata){ l.addMappedData(mapdata); }; l.process(); #ifndef CUTTINGSURFACE auto minmax = dataS->getMinMax(); if (minmax.first[0] < m_min) m_min = minmax.first[0]; if (minmax.second[0] > m_max) m_max = minmax.second[0]; #endif Object::ptr result = l.result(); DataBase::ptr mapresult = l.mapresult(); if (result && !result->isEmpty()) { #ifndef CUTTINGSURFACE result->copyAttributes(dataS); #endif result->updateInternals(); result->copyAttributes(grid, false); result->setTransform(grid->getTransform()); if (result->getTimestep() < 0) { result->setTimestep(grid->getTimestep()); result->setNumTimesteps(grid->getNumTimesteps()); } if (result->getBlock() < 0) { result->setBlock(grid->getBlock()); result->setNumBlocks(grid->getNumBlocks()); } if (mapdata && mapresult) { mapresult->updateInternals(); mapresult->copyAttributes(mapdata); mapresult->setGrid(result); addObject(m_dataOut, mapresult); } #ifndef CUTTINGSURFACE else { addObject(m_dataOut, result); } #endif } return true; }