// Copyright (C) 2002-2007 Nikolaus Gebhardt // This file is part of the "Irrlicht Engine". // For conditions of distribution and use, see copyright notice in irrlicht.h #include "CTriangleSelector.h" #include "ISceneNode.h" #include "IMeshBuffer.h" namespace irr { namespace scene { //! constructor CTriangleSelector::CTriangleSelector(ISceneNode* node) : SceneNode(node) { #ifdef _DEBUG setDebugName("CTriangleSelector"); #endif } //! constructor CTriangleSelector::CTriangleSelector(IMesh* mesh, ISceneNode* node) : SceneNode(node) { #ifdef _DEBUG setDebugName("CTriangleSelector"); #endif u32 cnt = mesh->getMeshBufferCount(); for (u32 i=0; igetMeshBuffer(i); s32 idxCnt = buf->getIndexCount(); const u16* indices = buf->getIndices(); core::triangle3df tri; switch (buf->getVertexType()) { case video::EVT_STANDARD: { video::S3DVertex* vtx = (video::S3DVertex*)buf->getVertices(); for (s32 j=0; jgetVertices(); for (s32 j=0; jgetVertices(); for (s32 j=0; j box, ISceneNode* node) : SceneNode(node) { #ifdef _DEBUG setDebugName("CTriangleSelector"); #endif // TODO } //! destructor CTriangleSelector::~CTriangleSelector() { } //! Gets all triangles. void CTriangleSelector::getTriangles(core::triangle3df* triangles, s32 arraySize, s32& outTriangleCount, const core::matrix4* transform) { s32 cnt = Triangles.size(); if (cnt > arraySize) cnt = arraySize; core::matrix4 mat; if (transform) mat = (*transform); if (SceneNode) mat *= SceneNode->getAbsoluteTransformation(); for (s32 i=0; i& box, const core::matrix4* transform) { // return all triangles getTriangles(triangles, arraySize, outTriangleCount, transform); } //! Gets all triangles which have or may have contact with a 3d line. void CTriangleSelector::getTriangles(core::triangle3df* triangles, s32 arraySize, s32& outTriangleCount, const core::line3d& line, const core::matrix4* transform) { // return all triangles getTriangles(triangles, arraySize, outTriangleCount, transform); } //! Returns amount of all available triangles in this selector s32 CTriangleSelector::getTriangleCount() const { return Triangles.size(); } } // end namespace scene } // end namespace irr