📄 utility.h
字号:
// FrameSkip.h
#ifndef __FRAMESKIP_H
#define __FRAMESKIP_H
#define D3DREND_ALPHA_NONE 0xFFFFFFFF
#define D3DREND_ALPHA_TRANS 0x77FFFFFF
#define RGB565TOARGB4444(Color) 0xf000| ((Color) & 0xf000)>>4 | ((Color) & 0x0780)>>3 | ((Color) & 0x001e)>>1
#define RGB565TOARGB8888(Color) 0xff000000| RGB16R(Color)<<16 | RGB16G(Color)<<8 | RGB16B(Color)
#define FLOATTOINT(f,i){\
__asm fld (f)\
__asm fistp (i)\
}
#define FRAME_VELOCITY 30.0f
class CUtility
{
public:
struct sFrameSkip
{
sFrameSkip();
BOOL Skip (void);
int Wait (void);
void GetTime (void);
void ResetFrame (void);
float m_fTime;
int m_nFps;
float m_fRate;
DWORD m_dwTimeSaving;
};
static void ResetFrame();
static BOOL FrameSkip();
static void SetTimer(DWORD dwTime);
static int StrTrim(char *dst, char *src, int len);
static int TokenStr(char *dst, char *src, int nLimit);
static void SetComma(char *szBuffer, int num);
static int GetComma(char *szBuffer);
static void SetDate(char* dest, char* src);
static void GetDate(char* dest, char* src);
static BOOL RectInRect(RECT rect1, RECT rect2);
static int GetStringPixel(HDC hdc, char* dest, char* src, int width);
static void Log(const char *log, ...);
static float V1ToV2Length(D3DXVECTOR3& v1, D3DXVECTOR3& v2) { return D3DXVec3Length( &(v1-v2) ); }
static float SectorV1ToV2(D3DXVECTOR3 *pV1, D3DXVECTOR3 *pV2); // 滴 氦磐狼 荤捞阿阑 府畔茄促.
static void QuaternionRotateVector(D3DXQUATERNION Quater, D3DXVECTOR3 *pV); // 孽磐甫 啊瘤绊 氦磐甫 雀傈矫挪促.
static void RotateVector(D3DXVECTOR3 *pOut,D3DXVECTOR3 *pAxis, float Angle);
static BOOL IntersectTriangle( const D3DXVECTOR3& , const D3DXVECTOR3& , D3DXVECTOR3&,
D3DXVECTOR3& , D3DXVECTOR3& , FLOAT* , FLOAT* , FLOAT* );
static float AngleBetweenV( D3DXVECTOR3 &P1, D3DXVECTOR3 &P2 );
static void printf_Debug(const char *Msg,...); // 叼滚弊芒俊 免仿
static char * GetDirPath( char * szPath, char *szDir, char *szFileName, char *szName );
// 伙阿屈 痢 器窃 抛胶飘.
// vN [In] : 乞搁俊 过急
// vPoint [In] : 备客 乞搁狼 背痢
// *pV [In] : 滚咆胶 3俺 硅凯狼 霉锅掳 林家(器窃盲农甫 且 弃府帮)
static bool PointInTri(D3DXVECTOR3 &vN, D3DXVECTOR3 &vPoint, D3DXVECTOR3 *pV);
static bool PointInTriEdge(D3DXVECTOR3 &vCenter,float R,D3DXVECTOR3 &vPoint, D3DXVECTOR3 *pV);
// pP [In] : 乞搁
// vCenter [In] : 备狼 吝缴
// R [In] : 馆瘤抚
// pPoint [Out] : 备秦柳 背痢
static bool SphereToPlane(D3DXPLANE *pP, D3DXVECTOR3 &vCenter, float R, D3DXVECTOR3 *pPoint, float *pDist);
// 器拱急
// vV [In] : 规氢 + 加档啊 钦贸柳 归磐
// vStartPt [In] : 矫累 困摹
// t [In] : 儒弗 矫埃 ( 拌加 绵利登绰.. )
// g [In] : 吝仿蔼
// pt[Out] : 弥绊 瘤痢俊 档崔窍绰 矫埃
// h [Out] : 弥绊 瘤痢俊 臭捞.
static D3DXVECTOR3 Parabola(D3DXVECTOR3& vV, D3DXVECTOR3& vStartPt,float AddedT, float t, float G=9.8f, float *pt=NULL,float *h=NULL);
// 壶函
static D3DXVECTOR3 Hypotenuse(D3DXVECTOR3 &vN, D3DXVECTOR3 &vDir, float Speed);
// 橇饭烙 扁霖俊 单捞磐 魂免(??), 矫埃扁霖栏肺 利寸茄 芭府 拌魂
static float FrameSecDist(float speed,DWORD time);
// MaxSpeed : 0捞搁 公茄 加档
static float FrameSecDist(float *speed,DWORD time, float Acceler, float MaxSpeed=0);
private:
static sFrameSkip g_FrameSkip;
static DWORD g_dwCurrentTime;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -