86 lines
1.7 KiB
C++
86 lines
1.7 KiB
C++
/******************************Module*Header*******************************\
|
|
* Module Name: nstate.h
|
|
*
|
|
* NORMAL_STATE
|
|
*
|
|
* Copyright (c) 1995 Microsoft Corporation
|
|
*
|
|
\**************************************************************************/
|
|
|
|
#ifndef __nstate_h__
|
|
#define __nstate_h__
|
|
|
|
#include "sscommon.h"
|
|
#include "objects.h"
|
|
#include "state.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;
|
|
|
|
#if 0
|
|
struct _OBJECT_SET {
|
|
public:
|
|
PIPE_OBJECT *shortPipe;
|
|
PIPE_OBJECT *longPipe;
|
|
ELBOW_OBJECT *elbows[4];
|
|
SPHERE_OBJECT *ballCap;
|
|
SPHERE_OBJECT *bigBall;
|
|
BALLJOINT_OBJECT *ballJoints[4];
|
|
} OBJECT_SET;
|
|
#endif
|
|
|
|
class NORMAL_STATE {
|
|
public:
|
|
int jointStyle;
|
|
int bCycleJointStyles;
|
|
|
|
PIPE_OBJECT *shortPipe;
|
|
PIPE_OBJECT *longPipe;
|
|
ELBOW_OBJECT *elbows[4];
|
|
SPHERE_OBJECT *ballCap;
|
|
SPHERE_OBJECT *bigBall;
|
|
BALLJOINT_OBJECT *ballJoints[4];
|
|
|
|
NORMAL_STATE( STATE *pState );
|
|
~NORMAL_STATE();
|
|
void Reset();
|
|
// int GetMaxPipesPerFrame();
|
|
void BuildObjects( float radius, float divSize, int nSlices,
|
|
BOOL bTexture, IPOINT2D *pTexRep );
|
|
int ChooseJointType();
|
|
};
|
|
|
|
#endif // __nstate_h__
|