1
// Copyright (C) 2002-2011 Nikolaus Gebhardt
2
// This file is part of the "Irrlicht Engine".
3
// For conditions of distribution and use, see copyright notice in irrlicht.h
5
#ifndef __C_OCTREE_TRIANGLE_SELECTOR_H_INCLUDED__
6
#define __C_OCTREE_TRIANGLE_SELECTOR_H_INCLUDED__
8
#include "CTriangleSelector.h"
17
//! Stupid triangle selector without optimization
18
class COctreeTriangleSelector : public CTriangleSelector
22
//! Constructs a selector based on a mesh
23
COctreeTriangleSelector(const IMesh* mesh, ISceneNode* node, s32 minimalPolysPerNode);
25
virtual ~COctreeTriangleSelector();
27
//! Gets all triangles which lie within a specific bounding box.
28
virtual void getTriangles(core::triangle3df* triangles, s32 arraySize, s32& outTriangleCount,
29
const core::aabbox3d<f32>& box, const core::matrix4* transform=0) const;
31
//! Gets all triangles which have or may have contact with a 3d line.
32
virtual void getTriangles(core::triangle3df* triangles, s32 arraySize,
33
s32& outTriangleCount, const core::line3d<f32>& line,
34
const core::matrix4* transform=0) const;
42
for (u32 i=0; i!=8; ++i)
48
for (u32 i=0; i!=8; ++i)
52
core::array<core::triangle3df> Triangles;
53
SOctreeNode* Child[8];
54
core::aabbox3d<f32> Box;
58
void constructOctree(SOctreeNode* node);
59
void deleteEmptyNodes(SOctreeNode* node);
60
void getTrianglesFromOctree(SOctreeNode* node, s32& trianglesWritten,
61
s32 maximumSize, const core::aabbox3d<f32>& box,
62
const core::matrix4* transform,
63
core::triangle3df* triangles) const;
65
void getTrianglesFromOctree(SOctreeNode* node, s32& trianglesWritten,
66
s32 maximumSize, const core::line3d<f32>& line,
67
const core::matrix4* transform,
68
core::triangle3df* triangles) const;
72
s32 MinimalPolysPerNode;
75
} // end namespace scene
76
} // end namespace irr