[Scummvm-git-logs] scummvm master -> 2038894746ab642035b0555e3f1c8265ca039071

aquadran noreply at scummvm.org
Thu Oct 3 10:32:42 UTC 2024


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
2038894746 WINTERMUTE: WME3D: Update SkinMeshHelper with updated API


Commit: 2038894746ab642035b0555e3f1c8265ca039071
    https://github.com/scummvm/scummvm/commit/2038894746ab642035b0555e3f1c8265ca039071
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2024-10-03T12:32:37+02:00

Commit Message:
WINTERMUTE: WME3D: Update SkinMeshHelper with updated API

Changed paths:
    engines/wintermute/base/gfx/skin_mesh_helper.cpp
    engines/wintermute/base/gfx/skin_mesh_helper.h


diff --git a/engines/wintermute/base/gfx/skin_mesh_helper.cpp b/engines/wintermute/base/gfx/skin_mesh_helper.cpp
index 6bd472ba056..aac2aaa2cf6 100644
--- a/engines/wintermute/base/gfx/skin_mesh_helper.cpp
+++ b/engines/wintermute/base/gfx/skin_mesh_helper.cpp
@@ -54,37 +54,40 @@ uint SkinMeshHelper::getNumFaces() {
 
 //////////////////////////////////////////////////////////////////////////
 uint SkinMeshHelper::getNumBones() {
-	return 0;//_mesh->getNumBones();
+	return _skinInfo->getNumBones();
 }
 
 //////////////////////////////////////////////////////////////////////////
-bool SkinMeshHelper::getOriginalMesh(XSkinMeshLoader **mesh) {
-	return true;//_mesh->cloneMeshFVF(_mesh->getOptions(), _mesh->getFVF(), mesh);
+bool SkinMeshHelper::getOriginalMesh(DXMesh **mesh) {
+	return _dxmesh->cloneMesh(mesh);
 }
 
 //////////////////////////////////////////////////////////////////////////
-bool SkinMeshHelper::generateSkinnedMesh(uint32 options, float minWeight, uint32 *adjacencyOut, XSkinMeshLoader **mesh) {
+bool SkinMeshHelper::generateSkinnedMesh(uint32 options, float minWeight, uint32 *adjacencyOut, DXMesh **mesh) {
 	bool res = getOriginalMesh(mesh);
-	/*	if (res) {
-	 (*mesh)->generateAdjacency(adjacencyOut);
-	 }*/
-	
+	if (res) {
+	 	(*mesh)->generateAdjacency(adjacencyOut);
+	}
+
 	return res;
 }
 
 //////////////////////////////////////////////////////////////////////////
-bool SkinMeshHelper::updateSkinnedMesh(const Math::Matrix4 *boneTransforms, XSkinMeshLoader *mesh) {
-	return true;//_mesh->updateSkinnedMesh(boneTransforms);
+bool SkinMeshHelper::updateSkinnedMesh(const DXMatrix *boneTransforms, DXMesh *mesh) {
+	void *sourceVerts = reinterpret_cast<void *>(_dxmesh->getVertexBuffer().ptr());
+	void *targetVerts = reinterpret_cast<void *>(mesh->getVertexBuffer().ptr());
+
+	return _skinInfo->updateSkinnedMesh(boneTransforms, sourceVerts, targetVerts);
 }
 
 //////////////////////////////////////////////////////////////////////////
 const char *SkinMeshHelper::getBoneName(uint boneIndex) {
-	return "";//_mesh->getBoneName(boneIndex);
+	return _skinInfo->getBoneName(boneIndex);
 }
 
 //////////////////////////////////////////////////////////////////////////
-Math::Matrix4 SkinMeshHelper::getBoneOffsetMatrix(uint boneIndex) {
-	return Math::Matrix4();//_mesh->getBoneOffsetMatrix(boneIndex);
+DXMatrix *SkinMeshHelper::getBoneOffsetMatrix(uint boneIndex) {
+	return _skinInfo->getBoneOffsetMatrix(boneIndex);
 }
 
 } // namespace Wintermute
diff --git a/engines/wintermute/base/gfx/skin_mesh_helper.h b/engines/wintermute/base/gfx/skin_mesh_helper.h
index 275d7c5723e..55b66fb1932 100644
--- a/engines/wintermute/base/gfx/skin_mesh_helper.h
+++ b/engines/wintermute/base/gfx/skin_mesh_helper.h
@@ -30,6 +30,9 @@
 
 #include "math/matrix4.h"
 #include "math/vector3d.h"
+#include "math/vector3d.h"
+
+#include "engines/wintermute/base/gfx/xmath.h"
 
 namespace Wintermute {
 
@@ -51,11 +54,11 @@ public:
 
 	uint getNumFaces();
 	uint getNumBones();
-	bool getOriginalMesh(XSkinMeshLoader **mesh);
-	bool generateSkinnedMesh(uint32 options, float minWeight, uint32 *adjacencyOut, XSkinMeshLoader **mesh);
-	bool updateSkinnedMesh(const Math::Matrix4 *boneTransforms, XSkinMeshLoader *mesh);
+	bool getOriginalMesh(DXMesh **mesh);
+	bool generateSkinnedMesh(uint32 options, float minWeight, uint32 *adjacencyOut, DXMesh **mesh);
+	bool updateSkinnedMesh(const DXMatrix *boneTransforms, DXMesh *mesh);
 	const char *getBoneName(uint boneIndex);
-	Math::Matrix4 getBoneOffsetMatrix(uint boneIndex);
+	DXMatrix *getBoneOffsetMatrix(uint boneIndex);
 	
 private:
 	XSkinMeshLoader *_mesh;




More information about the Scummvm-git-logs mailing list