Replaced C-style cast of void* vertices to static_cast, reverted adding emissive color to GenericCAO

This commit is contained in:
Andrey2470T 2024-06-09 13:12:29 +03:00
parent d3b63ba06f
commit b08ee987a6
3 changed files with 16 additions and 25 deletions

@ -926,7 +926,7 @@ void GenericCAO::setNodeLight(const video::SColor &light_color)
return; return;
} }
/*if (m_enable_shaders) { if (m_enable_shaders) {
if (m_prop.visual == "upright_sprite") { if (m_prop.visual == "upright_sprite") {
if (!m_meshnode) if (!m_meshnode)
return; return;
@ -942,7 +942,7 @@ void GenericCAO::setNodeLight(const video::SColor &light_color)
material.EmissiveColor = light_color; material.EmissiveColor = light_color;
} }
} }
} else {*/ } else {
if (m_meshnode) { if (m_meshnode) {
setMeshColor(m_meshnode->getMesh(), light_color); setMeshColor(m_meshnode->getMesh(), light_color);
} else if (m_animated_meshnode) { } else if (m_animated_meshnode) {
@ -950,7 +950,7 @@ void GenericCAO::setNodeLight(const video::SColor &light_color)
} else if (m_spritenode) { } else if (m_spritenode) {
m_spritenode->setColor(light_color); m_spritenode->setColor(light_color);
} }
//} }
} }
u16 GenericCAO::getLightPosition(v3s16 *pos) u16 GenericCAO::getLightPosition(v3s16 *pos)

@ -850,7 +850,7 @@ bool MapBlockMesh::animate(bool faraway, float time, int crack,
mesh->setDirty(scene::EBT_VERTEX); // force reload to VBO mesh->setDirty(scene::EBT_VERTEX); // force reload to VBO
scene::IMeshBuffer *buf = mesh-> scene::IMeshBuffer *buf = mesh->
getMeshBuffer(daynight_diff.first.second); getMeshBuffer(daynight_diff.first.second);
video::S3DVertexTangents *vertices = (video::S3DVertexTangents*)buf->getVertices(); video::S3DVertexTangents *vertices = static_cast<video::S3DVertexTangents*>(buf->getVertices());
for (const auto &j : daynight_diff.second) for (const auto &j : daynight_diff.second)
final_color_blend(&(vertices[j.first].Color), j.second, final_color_blend(&(vertices[j.first].Color), j.second,

@ -25,6 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include <IAnimatedMesh.h> #include <IAnimatedMesh.h>
#include <SAnimatedMesh.h> #include <SAnimatedMesh.h>
#include <IAnimatedMeshSceneNode.h> #include <IAnimatedMeshSceneNode.h>
#include <array>
inline static void applyShadeFactor(video::SColor& color, float factor) inline static void applyShadeFactor(video::SColor& color, float factor)
{ {
@ -161,7 +162,7 @@ void scaleMesh(scene::IMesh *mesh, v3f scale)
u32 mc = mesh->getMeshBufferCount(); u32 mc = mesh->getMeshBufferCount();
for (u32 j = 0; j < mc; j++) { for (u32 j = 0; j < mc; j++) {
scene::IMeshBuffer *buf = mesh->getMeshBuffer(j); scene::IMeshBuffer *buf = mesh->getMeshBuffer(j);
video::S3DVertex *vertices = (video::S3DVertex*)buf->getVertices(); video::S3DVertex *vertices = static_cast<video::S3DVertex*>(buf->getVertices());
for (u32 i = 0; i < buf->getVertexCount(); i++) for (u32 i = 0; i < buf->getVertexCount(); i++)
vertices[i].Pos *= scale; vertices[i].Pos *= scale;
@ -187,7 +188,7 @@ void scaleMeshTangents(scene::IMesh *mesh, v3f scale)
u32 mc = mesh->getMeshBufferCount(); u32 mc = mesh->getMeshBufferCount();
for (u32 j = 0; j < mc; j++) { for (u32 j = 0; j < mc; j++) {
scene::IMeshBuffer *buf = mesh->getMeshBuffer(j); scene::IMeshBuffer *buf = mesh->getMeshBuffer(j);
video::S3DVertexTangents *vertices = (video::S3DVertexTangents*)buf->getVertices(); video::S3DVertexTangents *vertices = static_cast<video::S3DVertexTangents*>(buf->getVertices());
for (u32 i = 0; i < buf->getVertexCount(); i++) for (u32 i = 0; i < buf->getVertexCount(); i++)
vertices[i].Pos *= scale; vertices[i].Pos *= scale;
@ -213,7 +214,7 @@ void translateMeshTangents(scene::IMesh *mesh, v3f vec)
u32 mc = mesh->getMeshBufferCount(); u32 mc = mesh->getMeshBufferCount();
for (u32 j = 0; j < mc; j++) { for (u32 j = 0; j < mc; j++) {
scene::IMeshBuffer *buf = mesh->getMeshBuffer(j); scene::IMeshBuffer *buf = mesh->getMeshBuffer(j);
video::S3DVertex *vertices = (video::S3DVertexTangents*)buf->getVertices(); video::S3DVertexTangents *vertices = static_cast<video::S3DVertexTangents*>(buf->getVertices());
for (u32 i = 0; i < buf->getVertexCount(); i++) for (u32 i = 0; i < buf->getVertexCount(); i++)
vertices[i].Pos += vec; vertices[i].Pos += vec;
@ -230,7 +231,7 @@ void translateMeshTangents(scene::IMesh *mesh, v3f vec)
void setMeshBufferColor(scene::IMeshBuffer *buf, const video::SColor &color) void setMeshBufferColor(scene::IMeshBuffer *buf, const video::SColor &color)
{ {
video::S3DVertex *vertices = (video::S3DVertex*)buf->getVertices(); video::S3DVertex *vertices = static_cast<video::S3DVertex*>(buf->getVertices());
for (u32 i = 0; i < buf->getVertexCount(); i++) for (u32 i = 0; i < buf->getVertexCount(); i++)
vertices[i].Color = color; vertices[i].Color = color;
} }
@ -238,7 +239,7 @@ void setMeshBufferColor(scene::IMeshBuffer *buf, const video::SColor &color)
void setMeshBufferTangentsColor(scene::IMeshBuffer *buf, void setMeshBufferTangentsColor(scene::IMeshBuffer *buf,
const video::SColor &color, const video::SColor &hw_color) const video::SColor &color, const video::SColor &hw_color)
{ {
video::S3DVertexTangents *vertices = (video::S3DVertexTangents*)buf->getVertices(); video::S3DVertexTangents *vertices = static_cast<video::S3DVertexTangents*>(buf->getVertices());
for (u32 i = 0; i < buf->getVertexCount(); i++) { for (u32 i = 0; i < buf->getVertexCount(); i++) {
vertices[i].Color = color; vertices[i].Color = color;
@ -262,20 +263,10 @@ void setMeshColor(scene::IMesh *mesh, const video::SColor &color)
setMeshBufferColor(mesh->getMeshBuffer(j), color); setMeshBufferColor(mesh->getMeshBuffer(j), color);
} }
/*void setMeshTangentsColor(scene::IMesh *mesh, const video::SColor &color,
const video::SColor &hw_color)
{
if (!mesh)
return;
for (u32 j = 0; j < mesh->getMeshBufferCount(); j++)
setMeshBufferTangentsColor(mesh->getMeshBuffer(j), color, hw_color);
}*/
void setMeshBufferTextureCoords(scene::IMeshBuffer *buf, const v2f *uv, u32 count) void setMeshBufferTextureCoords(scene::IMeshBuffer *buf, const v2f *uv, u32 count)
{ {
assert(buf->getVertexCount() >= count); assert(buf->getVertexCount() >= count);
video::S3DVertex *vertices = (video::S3DVertex*)buf->getVertices(); video::S3DVertex *vertices = static_cast<video::S3DVertex*>(buf->getVertices());
for (u32 i = 0; i < count; i++) for (u32 i = 0; i < count; i++)
vertices[i].TCoords = uv[i]; vertices[i].TCoords = uv[i];
} }
@ -285,7 +276,7 @@ static void applyToMesh(scene::IMesh *mesh, const F &fn)
{ {
for (u16 j = 0; j < mesh->getMeshBufferCount(); j++) { for (u16 j = 0; j < mesh->getMeshBufferCount(); j++) {
scene::IMeshBuffer *buf = mesh->getMeshBuffer(j); scene::IMeshBuffer *buf = mesh->getMeshBuffer(j);
T *vertices = (T*)buf->getVertices(); T *vertices = static_cast<T*>(buf->getVertices());
for (u32 i = 0; i < buf->getVertexCount(); i++) for (u32 i = 0; i < buf->getVertexCount(); i++)
fn(&vertices[i]); fn(&vertices[i]);
} }
@ -293,7 +284,7 @@ static void applyToMesh(scene::IMesh *mesh, const F &fn)
void colorizeMeshBufferTangents(scene::IMeshBuffer *buf, const video::SColor *buffercolor) void colorizeMeshBufferTangents(scene::IMeshBuffer *buf, const video::SColor *buffercolor)
{ {
video::S3DVertexTangents *vertices = (video::S3DVertexTangents*)buf->getVertices(); video::S3DVertexTangents *vertices = static_cast<video::S3DVertexTangents*>(buf->getVertices());
for (u32 i = 0; i < buf->getVertexCount(); i++) { for (u32 i = 0; i < buf->getVertexCount(); i++) {
video::S3DVertexTangents *vertex = &vertices[i]; video::S3DVertexTangents *vertex = &vertices[i];
video::SColor *vc = &(vertex->Color); video::SColor *vc = &(vertex->Color);
@ -415,7 +406,7 @@ scene::IMeshBuffer* cloneMeshBuffer(scene::IMeshBuffer *mesh_buffer)
{ {
switch (mesh_buffer->getVertexType()) { switch (mesh_buffer->getVertexType()) {
case video::EVT_STANDARD: { case video::EVT_STANDARD: {
video::S3DVertex *v = (video::S3DVertex*)mesh_buffer->getVertices(); video::S3DVertex *v = static_cast<video::S3DVertex*>(mesh_buffer->getVertices());
u16 *indices = mesh_buffer->getIndices(); u16 *indices = mesh_buffer->getIndices();
scene::SMeshBuffer *cloned_buffer = new scene::SMeshBuffer(); scene::SMeshBuffer *cloned_buffer = new scene::SMeshBuffer();
cloned_buffer->append(v, mesh_buffer->getVertexCount(), indices, cloned_buffer->append(v, mesh_buffer->getVertexCount(), indices,
@ -424,7 +415,7 @@ scene::IMeshBuffer* cloneMeshBuffer(scene::IMeshBuffer *mesh_buffer)
} }
case video::EVT_2TCOORDS: { case video::EVT_2TCOORDS: {
video::S3DVertex2TCoords *v = video::S3DVertex2TCoords *v =
(video::S3DVertex2TCoords*)mesh_buffer->getVertices(); static_cast<video::S3DVertex2TCoords*>(mesh_buffer->getVertices());
u16 *indices = mesh_buffer->getIndices(); u16 *indices = mesh_buffer->getIndices();
scene::SMeshBufferLightMap *cloned_buffer = scene::SMeshBufferLightMap *cloned_buffer =
new scene::SMeshBufferLightMap(); new scene::SMeshBufferLightMap();
@ -434,7 +425,7 @@ scene::IMeshBuffer* cloneMeshBuffer(scene::IMeshBuffer *mesh_buffer)
} }
case video::EVT_TANGENTS: { case video::EVT_TANGENTS: {
video::S3DVertexTangents *v = video::S3DVertexTangents *v =
(video::S3DVertexTangents*)mesh_buffer->getVertices(); static_cast<video::S3DVertexTangents*>(mesh_buffer->getVertices());
u16 *indices = mesh_buffer->getIndices(); u16 *indices = mesh_buffer->getIndices();
scene::SMeshBufferTangents *cloned_buffer = scene::SMeshBufferTangents *cloned_buffer =
new scene::SMeshBufferTangents(); new scene::SMeshBufferTangents();