home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1997 March
/
VPR9703A.ISO
/
VPR_DATA
/
DOGA
/
SOURCES
/
PASM.LZH
/
PARTS.H
< prev
next >
Wrap
C/C++ Source or Header
|
1996-07-03
|
3KB
|
98 lines
#ifndef _PARTS
#define _PARTS
#include <stdio.h>
const int CameraLines = 5;
enum SelectType;
const int CameraPoints = 6;
class CameraParts;
class Object;
enum LightType {LightLeftUpper, LightRightUpper, LightLeftLower, LightRightLower};
extern LightType lighttype;
class Parts {
public:
Vector position;
Vector scale;
Vector rotation;
Object *object;
int *point_x, *point_y, *point_z;
int *view_x, *view_y, *view_z;
int *line_1, *line_2;
int lines;
int maxx, minx;
int maxy, miny;
int maxz, minz;
int polygons;
int sel;
Parts *next;
Parts( Object* obj = NULL,
Vector& pos = Vector(0.0, 0.0, 0.0),
Vector& rot = Vector(0.0, 0.0, 0.0),
Vector& scal= Vector(1.0, 1.0, 1.0));
Parts(Parts*p);
~Parts(void);
virtual void CalcPoints(Matrix& m);
virtual void CalcView(Matrix& m);
// Matrix GetMatrix(Matrix& m = Matrix(1));
Matrix GetMatrix(void);
void GetMatrix(Matrix& move, Matrix& rot, Matrix& scal);
void SetRotationParameter(Matrix& m);
void Trans(SelectType t);
// Parts *FileRead(char *filename);
static int FileRead(Parts* (&p), CameraParts* &c, char *filename, char *initialdir);
static void SetLightType(LightType t) {lighttype = t;}
static LightType GetLightType(void) {return lighttype;}
int FileWrite(CameraParts *c, char *filename, char *initialdir);
virtual void PartsWrite(FILE *fp, char *initialdir, int length);
};
class CameraParts : public Parts {
public:
Vector target;
double angle;
CameraParts(
Vector& pos = Vector(1000.0, 0.0, 0.0),
Vector& target = Vector(0.0, 0.0, 0.0));
virtual void CalcPoints(Matrix& m);
virtual void CalcView(Matrix& m);
void SetAngle(double rad);
void SetTarget(Vector& v);
virtual void PartsWrite(FILE *fp, char *initialdir, int length);
private:
int l1[CameraLines], l2[CameraLines];
int px[CameraPoints], py[CameraPoints], pz[CameraPoints];
};
static const int MaxParts = 256;
class CombinedParts : public Parts {
public:
Parts *parts[MaxParts];
int nparts;
CombinedParts(void);
~CombinedParts(void);
int AddParts(Parts* p);
int DeleteParts(Parts* p);
void MoveParts(Matrix& m, double scalerate);
void MoveParts(void);
void DeleteAllParts(void);
void AddAllParts(Parts* p);
void CalcSize(Parts* p);
void CalcSizeAll(void);
virtual void CalcPoints(Matrix& m);
virtual void CalcView(Matrix& m);
Vector orig_position;
private:
Vector old_position;
Vector old_scale;
Vector old_rotation;
};
#endif