OBJECTS.H

/******************************Module*Header*******************************\ 
* Module Name: objects.h
*
* Copyright (c) 1994 Microsoft Corporation
*
\**************************************************************************/

#ifndef __objects_h__
#define __objects_h__

#include "sspipes.h"
#include "state.h"

class OBJECT_BUILD_INFO {
public:
float radius;
float divSize;
int nSlices;
BOOL bTexture;
IPOINT2D *texRep;
};

/**************************************************************************\
*
* OBJECT classes
*
* - Display list objects
*
\**************************************************************************/

class OBJECT {
protected:
int listNum;
int nSlices;
public:
void Draw();

OBJECT();
~OBJECT();
};

class PIPE_OBJECT : public OBJECT {
private:
void Build( OBJECT_BUILD_INFO *state, float length, float start_s, float s_end );
public:
PIPE_OBJECT( OBJECT_BUILD_INFO *state, float length );
PIPE_OBJECT( OBJECT_BUILD_INFO *state, float length, float start_s, float end_s );
};

class ELBOW_OBJECT : public OBJECT {
private:
void Build( OBJECT_BUILD_INFO *state, int notch, float start_s, float end_s );
public:
ELBOW_OBJECT( OBJECT_BUILD_INFO *state, int notch );
ELBOW_OBJECT( OBJECT_BUILD_INFO *state, int notch, float start_s, float end_s );
};

class BALLJOINT_OBJECT : public OBJECT {
private:
void Build( OBJECT_BUILD_INFO *state, int notch, float start_s, float end_s );
public:
// texturing version only
BALLJOINT_OBJECT( OBJECT_BUILD_INFO *state, int notch, float start_s, float end_s );
};

class SPHERE_OBJECT : public OBJECT {
private:
void Build( OBJECT_BUILD_INFO *state, float radius, float start_s, float end_s );
public:
SPHERE_OBJECT( OBJECT_BUILD_INFO *state, float radius, float start_s, float end_s );
SPHERE_OBJECT( OBJECT_BUILD_INFO *state, float radius );
};

#endif // __objects_h__