X-Git-Url: http://git.dev.opencascade.org/gitweb/?p=occt.git;a=blobdiff_plain;f=src%2FBVH%2FBVH_PrimitiveSet.hxx;h=ed2a52012414710df43f78a2ca54d1c3328062d5;hb=3c4e78f24f6e0f275808832ac7d828cb978ef2e6;hpb=68333c8f16e01c5252dbebd4c9fcd6680f3941ba diff --git a/src/BVH/BVH_PrimitiveSet.hxx b/src/BVH/BVH_PrimitiveSet.hxx new file mode 100644 index 0000000000..ed2a520124 --- /dev/null +++ b/src/BVH/BVH_PrimitiveSet.hxx @@ -0,0 +1,66 @@ +// Created on: 2013-12-20 +// Created by: Denis BOGOLEPOV +// Copyright (c) 2013 OPEN CASCADE SAS +// +// This file is part of Open CASCADE Technology software library. +// +// This library is free software; you can redistribute it and / or modify it +// under the terms of the GNU Lesser General Public version 2.1 as published +// by the Free Software Foundation, with special exception defined in the file +// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT +// distribution for complete text of the license and disclaimer of any warranty. +// +// Alternatively, this file may be used under the terms of Open CASCADE +// commercial license or contractual agreement. + +#ifndef _BVH_PrimitiveSet_Header +#define _BVH_PrimitiveSet_Header + +#include +#include + +//! Set of abstract geometric primitives. +template +class BVH_PrimitiveSet : public BVH_Object, public BVH_Set +{ + using BVH_Set::Box; + +public: + + //! Creates set of abstract primitives. + BVH_PrimitiveSet(); + + //! Releases resources of set of abstract primitives. + virtual ~BVH_PrimitiveSet(); + +public: + + //! Returns AABB of primitive set. + virtual BVH_Box Box() const; + + //! Returns constructed BVH tree. + virtual const NCollection_Handle >& BVH(); + + //! Returns the method (builder) to construct BVH. + virtual const NCollection_Handle >& Builder() const; + + //! Sets the method (builder) to construct BVH. + virtual void SetBuilder (NCollection_Handle >& theBuilder); + +protected: + + //! Updates BVH of primitive set. + virtual void Update(); + +protected: + + NCollection_Handle > myBVH; //!< Constructed bottom-level BVH + NCollection_Handle > myBuilder; //!< Builder for bottom-level BVH + + mutable BVH_Box myBox; //!< Cached bounding box of geometric primitives + +}; + +#include + +#endif // _BVH_PrimitiveSet_Header