1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-07-02 16:38:41 +00:00

Revert "Fix handling of skinned meshes for nodes"

It literally breaks torches and doors in MTG.
Regardless of whether this is an oversight or not let's not pull this in so close to release.
This reverts commit 612db5b2ca.
This commit is contained in:
sfan5 2025-05-14 23:21:33 +02:00
parent e039f4c8af
commit 8a28339ed3
6 changed files with 65 additions and 72 deletions

View file

@ -13,7 +13,6 @@
#include "client/texturesource.h"
#include "client/tile.h"
#include <IMeshManipulator.h>
#include <SMesh.h>
#include <SkinnedMesh.h>
#endif
#include "log.h"
@ -960,28 +959,23 @@ void ContentFeatures::updateTextures(ITextureSource *tsrc, IShaderSource *shdsrc
palette = tsrc->getPalette(palette_name);
if (drawtype == NDT_MESH && !mesh.empty()) {
// Note: By freshly reading, we get an unencumbered mesh.
if (scene::IMesh *src_mesh = client->getMesh(mesh)) {
f32 mesh_scale = 1.0f;
if (auto *static_mesh = dynamic_cast<scene::SMesh *>(src_mesh)) {
mesh_ptr = static_mesh;
// Compatibility: Only apply BS scaling to static meshes (.obj). See #15811.
mesh_scale = 10.0f;
} else {
// We only want to consider static meshes from here on.
mesh_ptr = cloneStaticMesh(src_mesh);
src_mesh->drop();
}
scaleMesh(mesh_ptr, v3f(mesh_scale * visual_scale));
// Read the mesh and apply scale
mesh_ptr = client->getMesh(mesh);
if (mesh_ptr) {
v3f scale = v3f(BS) * visual_scale;
scaleMesh(mesh_ptr, scale);
recalculateBoundingBox(mesh_ptr);
if (!checkMeshNormals(mesh_ptr)) {
// TODO this should be done consistently when the mesh is loaded
infostream << "ContentFeatures: recalculating normals for mesh "
<< mesh << std::endl;
meshmanip->recalculateNormals(mesh_ptr, true, false);
} else {
// Animation is not supported, but we need to reset it to
// default state if it is animated.
// Note: recalculateNormals() also does this hence the else-block
if (mesh_ptr->getMeshType() == scene::EAMT_SKINNED)
((scene::SkinnedMesh*) mesh_ptr)->resetAnimation();
}
} else {
mesh_ptr = nullptr;
}
}
}