84 lines
2.5 KiB
C++
84 lines
2.5 KiB
C++
/******************************Module*Header*******************************\
|
|
* Module Name: logobj.hxx
|
|
*
|
|
* Copyright (c) 1997 Microsoft Corporation
|
|
*
|
|
\**************************************************************************/
|
|
|
|
#ifndef __logobj_hxx__
|
|
#define __logobj_hxx__
|
|
|
|
#include "mtk.hxx"
|
|
|
|
#if 1
|
|
#define OBJECT_WIDTH 2.6f
|
|
#else
|
|
#define OBJECT_WIDTH 3.535f // so object is 256 pixels wide, looks good
|
|
//#define OBJECT_WIDTH 1.7675f // object 128 pixels : ugly
|
|
#endif
|
|
|
|
#define FRAME_SIZE (0.05f * OBJECT_WIDTH)
|
|
#define FRAME_DEPTH 0.1f
|
|
|
|
class LOG_OBJECT {
|
|
public:
|
|
FSIZE fImageSize; // size of image part of object
|
|
float fCurContextWidth; // current width of context part of object
|
|
float fMaxContextWidth; // max width of context part of object
|
|
FSIZE fFrameSize; // size of frame around object (offset value)
|
|
float fFrameDepth;
|
|
|
|
TEXTURE *pTex;
|
|
|
|
LOG_OBJECT();
|
|
~LOG_OBJECT();
|
|
void ShowContext( BOOL bShow );
|
|
void ShowFrame( BOOL bShow );
|
|
|
|
void SetDest( float x, float y, float z );
|
|
void SetDest( POINT3D *pDest );
|
|
void OffsetDest( float x, float y, float z );
|
|
void SetContextSize( float fPortion );
|
|
void SetImageSize( FSIZE *pSize );
|
|
void SetTexture( TEXTURE *pTexture );
|
|
|
|
void GetDest( POINT3D *pDest );
|
|
void GetRect( GLIRECT *pRect );
|
|
int GetIter() { return iter; };
|
|
// void GetPos( POINT3D *curpos );
|
|
|
|
void Translate();
|
|
void Rotate();
|
|
BOOL NextFlyIteration();
|
|
void Draw();
|
|
void Draw( BOOL bUpdateWinRect );
|
|
void ResetMotion();
|
|
void SetDampedFlyMotion( float deviation );
|
|
void SetDampedFlyMotion( float deviation, POINT3D *pOffset );
|
|
void CalcWinRect();
|
|
|
|
private:
|
|
void CalcWinRect( BOOL bTransform );
|
|
void CalcCoords();
|
|
void CalcFrameCoords();
|
|
void CalcTexCoords();
|
|
void CalcFrameNormals();
|
|
void DrawFace();
|
|
void DrawFrame();
|
|
|
|
float dest[3]; // destination position (current if offset = 0)
|
|
float offset[3]; // offset from destination
|
|
float rotAxis[3];
|
|
float ang;
|
|
int iter; // fly iterations
|
|
|
|
GLIRECT rect; // Bounds rectangle (GL coords : bl=origin)
|
|
BOOL bShowContext;
|
|
BOOL bFramed;
|
|
POINT3D point[8]; // current coords of object (object space)
|
|
POINT3D frameNormal[4]; // normals for the frame
|
|
TEX_POINT2D texPoint[4]; // tex coords for front face texture
|
|
};
|
|
|
|
#endif // __logobj_hxx__
|