mirror of
https://github.com/0TheSpy/Seaside.git
synced 2025-01-10 11:19:38 +08:00
122 lines
2.3 KiB
C
122 lines
2.3 KiB
C
|
#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
|