Seaside/SpyCustom/sdk/bone_accessor.h

122 lines
2.3 KiB
C
Raw Normal View History

2021-06-16 18:45:17 +03:00
#ifndef BONE_ACCESSOR_H
#define BONE_ACCESSOR_H
#ifdef _WIN32
#pragma once
#endif
#include "studio.h"
class C_BaseAnimating;
class CBoneAccessor
{
public:
CBoneAccessor();
CBoneAccessor(matrix3x4_t* pBones);
#if defined( CLIENT_DLL )
void Init(const C_BaseAnimating* pAnimating, matrix3x4_t* pBones);
#endif
int GetReadableBones();
void SetReadableBones(int flags);
int GetWritableBones();
void SetWritableBones(int flags);
const matrix3x4_t& GetBone(int iBone) const;
const matrix3x4_t& operator[](int iBone) const;
matrix3x4_t& GetBoneForWrite(int iBone);
matrix3x4_t* GetBoneArrayForWrite() const;
private:
#if defined( CLIENT_DLL ) && defined( _DEBUG )
void SanityCheckBone(int iBone, bool bReadable) const;
#endif
const C_BaseAnimating* m_pAnimating;
matrix3x4_t* m_pBones;
int m_ReadableBones;
int m_WritableBones;
};
inline CBoneAccessor::CBoneAccessor()
{
m_pAnimating = NULL;
m_pBones = NULL;
m_ReadableBones = m_WritableBones = 0;
}
inline CBoneAccessor::CBoneAccessor(matrix3x4_t* pBones)
{
m_pAnimating = NULL;
m_pBones = pBones;
}
#if defined( CLIENT_DLL )
inline void CBoneAccessor::Init(const C_BaseAnimating* pAnimating, matrix3x4_t* pBones)
{
m_pAnimating = pAnimating;
m_pBones = pBones;
}
#endif
inline int CBoneAccessor::GetReadableBones()
{
return m_ReadableBones;
}
inline void CBoneAccessor::SetReadableBones(int flags)
{
m_ReadableBones = flags;
}
inline int CBoneAccessor::GetWritableBones()
{
return m_WritableBones;
}
inline void CBoneAccessor::SetWritableBones(int flags)
{
m_WritableBones = flags;
}
inline const matrix3x4_t& CBoneAccessor::GetBone(int iBone) const
{
#if defined( CLIENT_DLL ) && defined( _DEBUG )
SanityCheckBone(iBone, true);
#endif
return m_pBones[iBone];
}
inline const matrix3x4_t& CBoneAccessor::operator[](int iBone) const
{
#if defined( CLIENT_DLL ) && defined( _DEBUG )
SanityCheckBone(iBone, true);
#endif
return m_pBones[iBone];
}
inline matrix3x4_t& CBoneAccessor::GetBoneForWrite(int iBone)
{
#if defined( CLIENT_DLL ) && defined( _DEBUG )
SanityCheckBone(iBone, false);
#endif
return m_pBones[iBone];
}
inline matrix3x4_t* CBoneAccessor::GetBoneArrayForWrite(void) const
{
return m_pBones;
}
#endif