windows-nt/Source/XPSP1/NT/shell/osshell/control/scrnsave/pipes/nstate.h
2020-09-26 16:20:57 +08:00

77 lines
1.7 KiB
C++

//-----------------------------------------------------------------------------
// File: nstate.h
//
// Desc: NORMAL_STATE
//
// Copyright (c) 1994-2000 Microsoft Corporation
//-----------------------------------------------------------------------------
#ifndef __nstate_h__
#define __nstate_h__
#define NORMAL_PIPE_COUNT 5
#define NORMAL_TEX_PIPE_COUNT 3
#define NUM_JOINT_STYLES 3
// styles for pipe joints
enum
{
ELBOWS = 0,
BALLS,
EITHER
};
// joint types
enum
{
ELBOW_JOINT = 0,
BALL_JOINT
};
// shchemes for choosing directions
enum
{
NORMAL_SCHEME_CHOOSE_DIR_RANDOM,
NORMAL_SCHEME_CHOOSE_DIR_TURN,
NORMAL_SCHEME_CHOOSE_DIR_STRAIGHT
};
// this used for traditional pipe drawing
class PIPE_OBJECT;
class ELBOW_OBJECT;
class SPHERE_OBJECT;
class BALLJOINT_OBJECT;
class STATE;
//-----------------------------------------------------------------------------
// Name:
// Desc:
//-----------------------------------------------------------------------------
class NORMAL_STATE
{
public:
int m_jointStyle;
int m_bCycleJointStyles;
IDirect3DDevice8* m_pd3dDevice;
PIPE_OBJECT* m_pShortPipe;
PIPE_OBJECT* m_pLongPipe;
ELBOW_OBJECT* m_pElbows[4];
SPHERE_OBJECT* m_pBallCap;
SPHERE_OBJECT* m_pBigBall;
BALLJOINT_OBJECT* m_pBallJoints[4];
NORMAL_STATE( STATE *pState );
~NORMAL_STATE();
void Reset();
void BuildObjects( float radius, float divSize, int nSlices,
BOOL bTexture, IPOINT2D *pTexRep );
int ChooseJointType();
};
#endif // __nstate_h__