1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
//##########################################################################
//# #
//# CLOUDCOMPARE #
//# #
//# This program is free software; you can redistribute it and/or modify #
//# it under the terms of the GNU General Public License as published by #
//# the Free Software Foundation; version 2 or later of the License. #
//# #
//# This program is distributed in the hope that it will be useful, #
//# but WITHOUT ANY WARRANTY; without even the implied warranty of #
//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
//# GNU General Public License for more details. #
//# #
//# COPYRIGHT: EDF R&D / TELECOM ParisTech (ENST-TSI) #
//# #
//##########################################################################
//Always first
//#include "ccIncludeGL.h"
#include "ccOctreeProxy.h"
//Local
//#include "ccCameraSensor.h"
//#include "ccNormalVectors.h"
//#include "ccBox.h"
//CCLib
//#include <ScalarFieldTools.h>
//#include <RayAndBox.h>
ccOctreeProxy::ccOctreeProxy( ccOctree::Shared octree/*=ccOctree::Shared(0)*/,
QString name/*="Octree"*/)
: ccHObject(name)
, m_octree(octree)
{
setVisible(false);
lockVisibility(false);
}
ccOctreeProxy::~ccOctreeProxy()
{
}
ccBBox ccOctreeProxy::getOwnBB(bool withGLFeatures/*=false*/)
{
if (!m_octree)
{
assert(false);
return ccBBox();
}
return withGLFeatures ? m_octree->getSquareBB() : m_octree->getPointsBB();
}
void ccOctreeProxy::drawMeOnly(CC_DRAW_CONTEXT& context)
{
if (!m_octree)
{
assert(false);
return;
}
if (!MACRO_Draw3D(context))
return;
//get the set of OpenGL functions (version 2.1)
QOpenGLFunctions_2_1 *glFunc = context.glFunctions<QOpenGLFunctions_2_1>();
assert(glFunc != nullptr);
if (glFunc == nullptr)
return;
bool pushName = MACRO_DrawEntityNames(context);
if (pushName)
{
//not fast at all!
if (MACRO_DrawFastNamesOnly(context))
return;
glFunc->glPushName(getUniqueIDForDisplay());
}
m_octree->draw(context);
if (pushName)
{
glFunc->glPopName();
}
}
|