From 68f5b877c72cf91106ac343673f8a31b9712a470 Mon Sep 17 00:00:00 2001 From: RealBadAngel Date: Sun, 21 Feb 2016 06:50:41 +0100 Subject: Halo: Highlight selected face This is a slightly modified and cleaned up version of #3774 by RealBadAngel. By sofar: Remove color change (just make it lighter) and some minor cleanups. --- src/mesh.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/mesh.cpp') diff --git a/src/mesh.cpp b/src/mesh.cpp index b5bf8660a..b68862d22 100644 --- a/src/mesh.cpp +++ b/src/mesh.cpp @@ -226,7 +226,27 @@ void setMeshColorByNormalXYZ(scene::IMesh *mesh, vertex->Color = colorY; else vertex->Color = colorZ; + } + } +} + +void setMeshColorByNormal(scene::IMesh *mesh, const v3f &normal, + const video::SColor &color) +{ + if (!mesh) + return; + u16 mc = mesh->getMeshBufferCount(); + for (u16 j = 0; j < mc; j++) { + scene::IMeshBuffer *buf = mesh->getMeshBuffer(j); + const u32 stride = getVertexPitchFromType(buf->getVertexType()); + u32 vertex_count = buf->getVertexCount(); + u8 *vertices = (u8 *)buf->getVertices(); + for (u32 i = 0; i < vertex_count; i++) { + video::S3DVertex *vertex = (video::S3DVertex *)(vertices + i * stride); + if (normal == vertex->Normal) { + vertex->Color = color; + } } } } -- cgit v1.2.3