mirror of
https://github.com/PrimeDecomp/prime.git
synced 2025-12-16 05:37:01 +00:00
34
include/Kyoto/Animation/CVirtualBone.hpp
Normal file
34
include/Kyoto/Animation/CVirtualBone.hpp
Normal file
@@ -0,0 +1,34 @@
|
||||
#ifndef _CVIRTUALBONE
|
||||
#define _CVIRTUALBONE
|
||||
|
||||
#include "Kyoto/Animation/CSegId.hpp"
|
||||
#include "Kyoto/Math/CMatrix3f.hpp"
|
||||
#include "Kyoto/Math/CTransform4f.hpp"
|
||||
|
||||
struct SSkinWeighting {
|
||||
CSegId x0_id;
|
||||
float x4_weight;
|
||||
explicit SSkinWeighting(CInputStream& in) : x0_id(in), x4_weight(in.ReadFloat()) {}
|
||||
};
|
||||
|
||||
class CPoseAsTransforms;
|
||||
class CVirtualBone {
|
||||
public:
|
||||
explicit CVirtualBone(CInputStream& in);
|
||||
const rstl::reserved_vector< SSkinWeighting, 3 >& GetWeights() const { return x0_weights; }
|
||||
uint GetVertexCount() const { return x1c_vertexCount; }
|
||||
|
||||
void BuildPoints(const ushort*, volatile void*, int) const;
|
||||
void BuildNormals(const ushort*, volatile void*, int) const;
|
||||
void BuildNormals(const CVector3f*, CVector3f*, int) const;
|
||||
void BuildAccumulatedTransform(const CPoseAsTransforms& pose, const CVector3f* points) const;
|
||||
void BuildFinalPosMatrix(const CPoseAsTransforms& pose, const CVector3f* points) const;
|
||||
|
||||
private:
|
||||
rstl::reserved_vector< SSkinWeighting, 3 > x0_weights;
|
||||
uint x1c_vertexCount;
|
||||
mutable CTransform4f x20_xf;
|
||||
mutable CMatrix3f x50_rotation;
|
||||
};
|
||||
|
||||
#endif // _CVIRTUALBONE
|
||||
Reference in New Issue
Block a user