closes https://github.com/assimp/assimp/issues/2154: remove redundant file from source folder.
parent
18879c0952
commit
35a727a3e4
|
@ -1,141 +0,0 @@
|
||||||
/*
|
|
||||||
Open Asset Import Library (assimp)
|
|
||||||
----------------------------------------------------------------------
|
|
||||||
|
|
||||||
Copyright (c) 2006-2017, assimp team
|
|
||||||
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use of this software in source and binary forms,
|
|
||||||
with or without modification, are permitted provided that the
|
|
||||||
following conditions are met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above
|
|
||||||
copyright notice, this list of conditions and the
|
|
||||||
following disclaimer.
|
|
||||||
|
|
||||||
* Redistributions in binary form must reproduce the above
|
|
||||||
copyright notice, this list of conditions and the
|
|
||||||
following disclaimer in the documentation and/or other
|
|
||||||
materials provided with the distribution.
|
|
||||||
|
|
||||||
* Neither the name of the assimp team, nor the names of its
|
|
||||||
contributors may be used to endorse or promote products
|
|
||||||
derived from this software without specific prior
|
|
||||||
written permission of the assimp team.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** Small helper classes to optimize finding vertices close to a given location
|
|
||||||
*/
|
|
||||||
#ifndef AI_D3DSSPATIALSORT_H_INC
|
|
||||||
#define AI_D3DSSPATIALSORT_H_INC
|
|
||||||
|
|
||||||
#include <assimp/types.h>
|
|
||||||
#include <vector>
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
namespace Assimp {
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------
|
|
||||||
/** Specialized version of SpatialSort to support smoothing groups
|
|
||||||
* This is used in by the 3DS, ASE and LWO loaders. 3DS and ASE share their
|
|
||||||
* normal computation code in SmoothingGroups.inl, the LWO loader has its own
|
|
||||||
* implementation to handle all details of its file format correctly.
|
|
||||||
*/
|
|
||||||
// ----------------------------------------------------------------------------------
|
|
||||||
class ASSIMP_API SGSpatialSort
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
SGSpatialSort();
|
|
||||||
|
|
||||||
// -------------------------------------------------------------------
|
|
||||||
/** Construction from a given face array, handling smoothing groups
|
|
||||||
* properly
|
|
||||||
*/
|
|
||||||
explicit SGSpatialSort(const std::vector<aiVector3D>& vPositions);
|
|
||||||
|
|
||||||
// -------------------------------------------------------------------
|
|
||||||
/** Add a vertex to the spatial sort
|
|
||||||
* @param vPosition Vertex position to be added
|
|
||||||
* @param index Index of the vrtex
|
|
||||||
* @param smoothingGroup SmoothingGroup for this vertex
|
|
||||||
*/
|
|
||||||
void Add(const aiVector3D& vPosition, unsigned int index,
|
|
||||||
unsigned int smoothingGroup);
|
|
||||||
|
|
||||||
// -------------------------------------------------------------------
|
|
||||||
/** Prepare the spatial sorter for use. This step runs in O(logn)
|
|
||||||
*/
|
|
||||||
void Prepare();
|
|
||||||
|
|
||||||
/** Destructor */
|
|
||||||
~SGSpatialSort();
|
|
||||||
|
|
||||||
// -------------------------------------------------------------------
|
|
||||||
/** Returns an iterator for all positions close to the given position.
|
|
||||||
* @param pPosition The position to look for vertices.
|
|
||||||
* @param pSG Only included vertices with at least one shared smooth group
|
|
||||||
* @param pRadius Maximal distance from the position a vertex may have
|
|
||||||
* to be counted in.
|
|
||||||
* @param poResults The container to store the indices of the found
|
|
||||||
* positions. Will be emptied by the call so it may contain anything.
|
|
||||||
* @param exactMatch Specifies whether smoothing groups are bit masks
|
|
||||||
* (false) or integral values (true). In the latter case, a vertex
|
|
||||||
* cannot belong to more than one smoothing group.
|
|
||||||
* @return An iterator to iterate over all vertices in the given area.
|
|
||||||
*/
|
|
||||||
// -------------------------------------------------------------------
|
|
||||||
void FindPositions( const aiVector3D& pPosition, uint32_t pSG,
|
|
||||||
float pRadius, std::vector<unsigned int>& poResults,
|
|
||||||
bool exactMatch = false) const;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
/** Normal of the sorting plane, normalized. The center is always at (0, 0, 0) */
|
|
||||||
aiVector3D mPlaneNormal;
|
|
||||||
|
|
||||||
// -------------------------------------------------------------------
|
|
||||||
/** An entry in a spatially sorted position array. Consists of a
|
|
||||||
* vertex index, its position and its precalculated distance from
|
|
||||||
* the reference plane */
|
|
||||||
// -------------------------------------------------------------------
|
|
||||||
struct Entry
|
|
||||||
{
|
|
||||||
unsigned int mIndex; ///< The vertex referred by this entry
|
|
||||||
aiVector3D mPosition; ///< Position
|
|
||||||
uint32_t mSmoothGroups;
|
|
||||||
float mDistance; ///< Distance of this vertex to the sorting plane
|
|
||||||
|
|
||||||
Entry() { /** intentionally not initialized.*/ }
|
|
||||||
Entry( unsigned int pIndex, const aiVector3D& pPosition, float pDistance,uint32_t pSG)
|
|
||||||
:
|
|
||||||
mIndex( pIndex),
|
|
||||||
mPosition( pPosition),
|
|
||||||
mSmoothGroups (pSG),
|
|
||||||
mDistance( pDistance)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
bool operator < (const Entry& e) const { return mDistance < e.mDistance; }
|
|
||||||
};
|
|
||||||
|
|
||||||
// all positions, sorted by distance to the sorting plane
|
|
||||||
std::vector<Entry> mPositions;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // end of namespace Assimp
|
|
||||||
|
|
||||||
#endif // AI_SPATIALSORT_H_INC
|
|
Loading…
Reference in New Issue