Files
FC1/CryAnimation/CrySkinMorph.h
romkazvo 34d6c5d489 123
2023-08-07 19:29:24 +08:00

49 lines
1.5 KiB
C++

#ifndef _CRY_ANIMATION_CRY_SKIN_MORPH_HDR_
#define _CRY_ANIMATION_CRY_SKIN_MORPH_HDR_
#include "CrySkinBase.h"
//////////////////////////////////////////////////////////////////////////
// This skinner is capable only of morphing a few vertices and adding their
// displacements to the destination vertex array
class CrySkinMorph: public CrySkinBase
{
public:
// does the skinning out of the given array of global matrices:
// adds the corresponding displacements with the given weight
void skin (const Matrix44* pBones, float fWeight, Vec3d* pDest)const;
// does the skinning out of the given array of global matrices:
// adds the corresponding displacements with the given weight
// also tries to estimate the changes in normals
void skin (const Matrix44* pBones, float fWeight, Vec3d* pDest, Vec3dA16* pDestNormalsA16, float fAmplify = 1) const;
void scale (float fScale)
{
// to scale it, we just need to proportionally scale each vertex x,y,z
scaleVertices(fScale);
}
friend class CrySkinMorphBuilder;
class CStatistics: public CrySkinBase::CStatistics
{
public:
CStatistics (const CrySkinMorph* pSkin):
CrySkinBase::CStatistics(pSkin)
{
init(pSkin);
}
void init(const CrySkinMorph* pSkin);
void addOffset (const Vec3d& v);
// destination vertex set
std::set<unsigned> setDests;
// number of rigid and smooth vertices
unsigned numRigid, numSmooth;
// minimum and maximum offset length
float fMinOffset, fMaxOffset;
};
};
#endif