aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/others/irrlicht-1.8.1/source/Irrlicht/CTriangleBBSelector.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/others/irrlicht-1.8.1/source/Irrlicht/CTriangleBBSelector.cpp')
-rw-r--r--src/others/irrlicht-1.8.1/source/Irrlicht/CTriangleBBSelector.cpp80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/others/irrlicht-1.8.1/source/Irrlicht/CTriangleBBSelector.cpp b/src/others/irrlicht-1.8.1/source/Irrlicht/CTriangleBBSelector.cpp
new file mode 100644
index 0000000..547b249
--- /dev/null
+++ b/src/others/irrlicht-1.8.1/source/Irrlicht/CTriangleBBSelector.cpp
@@ -0,0 +1,80 @@
1// Copyright (C) 2002-2012 Nikolaus Gebhardt
2// This file is part of the "Irrlicht Engine".
3// For conditions of distribution and use, see copyright notice in irrlicht.h
4
5#include "CTriangleBBSelector.h"
6#include "ISceneNode.h"
7
8namespace irr
9{
10namespace scene
11{
12
13//! constructor
14CTriangleBBSelector::CTriangleBBSelector(ISceneNode* node)
15: CTriangleSelector(node)
16{
17 #ifdef _DEBUG
18 setDebugName("CTriangleBBSelector");
19 #endif
20
21 Triangles.set_used(12); // a box has 12 triangles.
22}
23
24
25
26//! Gets all triangles.
27void CTriangleBBSelector::getTriangles(core::triangle3df* triangles,
28 s32 arraySize, s32& outTriangleCount,
29 const core::matrix4* transform) const
30{
31 if (!SceneNode)
32 return;
33
34 // construct triangles
35 const core::aabbox3d<f32>& box = SceneNode->getBoundingBox();
36 core::vector3df edges[8];
37 box.getEdges(edges);
38
39 Triangles[0].set( edges[3], edges[0], edges[2]);
40 Triangles[1].set( edges[3], edges[1], edges[0]);
41
42 Triangles[2].set( edges[3], edges[2], edges[7]);
43 Triangles[3].set( edges[7], edges[2], edges[6]);
44
45 Triangles[4].set( edges[7], edges[6], edges[4]);
46 Triangles[5].set( edges[5], edges[7], edges[4]);
47
48 Triangles[6].set( edges[5], edges[4], edges[0]);
49 Triangles[7].set( edges[5], edges[0], edges[1]);
50
51 Triangles[8].set( edges[1], edges[3], edges[7]);
52 Triangles[9].set( edges[1], edges[7], edges[5]);
53
54 Triangles[10].set(edges[0], edges[6], edges[2]);
55 Triangles[11].set(edges[0], edges[4], edges[6]);
56
57 // call parent
58 CTriangleSelector::getTriangles(triangles, arraySize, outTriangleCount, transform);
59}
60
61void CTriangleBBSelector::getTriangles(core::triangle3df* triangles,
62 s32 arraySize, s32& outTriangleCount,
63 const core::aabbox3d<f32>& box,
64 const core::matrix4* transform) const
65{
66 return getTriangles(triangles, arraySize, outTriangleCount, transform);
67}
68
69void CTriangleBBSelector::getTriangles(core::triangle3df* triangles,
70 s32 arraySize, s32& outTriangleCount,
71 const core::line3d<f32>& line,
72 const core::matrix4* transform) const
73{
74 return getTriangles(triangles, arraySize, outTriangleCount, transform);
75}
76
77
78} // end namespace scene
79} // end namespace irr
80