// Management methods
    Renderable * AtomRenderableManager::create(void * data)
    {
        Utopia::Node * atom = (Utopia::Node *) data;
        AtomRenderable * newRenderable = new AtomRenderable(atom, this);
//              qDebug() << "AtomRenderableManager::create" << newRenderable;
        renderables[atom] = newRenderable;
        invalidateBuffers();
        return newRenderable;
    }
bool VolumeBufferManager::setMaxResolution(unsigned int dimX, unsigned int dimY, unsigned int dimZ)
{
	m_DimX = dimX;
	m_DimY = dimY;
	m_DimZ = dimZ;
	m_DownLoadManager.allocateBuffer(dimX, dimY, dimZ);
	invalidateBuffers();
	return true;
}
 void AtomRenderableManager::destroy(Renderable * renderable)
 {
     AtomRenderable * atomRenderable = (AtomRenderable *) renderable;
     if (atomRenderable)
     {
         if (atomRenderable->buffer)
         {
             invalidateBuffers();
             atomRenderable->buffer->invalidate();
             atomRenderable->buffer = 0;
         }
         renderables.erase(atomRenderable->getData());
         delete atomRenderable;
     }
 }
bool VolumeBufferManager::setSourceManager(SourceManager* sourceManager)
{
	if (sourceManager) {
		invalidateBuffers();
		m_SourceManager = sourceManager;

		if (!setNumberOfVariables(m_SourceManager->getSource()->getNumVars())) {
			m_SourceManager = 0;
			return false;
		}
		else {
			return true;
		}
	}
	else {
		sourceManager = 0;
		m_NumVariables = 0;
		return true;
	}
}
bool VolumeBufferManager::setRequestRegion(double minX, double minY, double minZ, double maxX, double maxY, double maxZ, unsigned int time)
{
	if (m_MinX!=minX ||
		m_MinY!=minY ||
		m_MinZ!=minZ ||
		m_MaxX!=maxX ||
		m_MaxY!=maxY ||
		m_MaxZ!=maxZ ||
		m_Time!=time) {
		invalidateBuffers();
	}

	m_MinX = minX;
	m_MinY = minY;
	m_MinZ = minZ;
	m_MaxX = maxX;
	m_MaxY = maxY;
	m_MaxZ = maxZ;
	m_Time = time;
	//invalidateBuffers();
	return true;
}