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 >
C/C++ Source or Header  |  1996-07-03  |  3KB  |  98 lines

  1. #ifndef _PARTS
  2. #define _PARTS
  3.  
  4. #include <stdio.h>
  5.  
  6. const int CameraLines = 5;
  7. enum SelectType;
  8. const int CameraPoints = 6;
  9.  
  10. class CameraParts;
  11. class Object;
  12.  
  13. enum LightType {LightLeftUpper, LightRightUpper, LightLeftLower, LightRightLower};
  14. extern LightType lighttype;
  15. class Parts {
  16. public:
  17.     Vector position;
  18.     Vector scale;
  19.     Vector rotation;
  20.     Object *object;
  21.     int *point_x, *point_y, *point_z;
  22.     int *view_x, *view_y, *view_z;
  23.     int *line_1, *line_2;
  24.     int lines;
  25.     int        maxx, minx;
  26.     int        maxy, miny;
  27.     int        maxz, minz;
  28.     int    polygons;
  29.     int sel;
  30.     Parts *next;
  31.     Parts(    Object* obj = NULL,
  32.             Vector& pos = Vector(0.0, 0.0, 0.0),
  33.             Vector& rot = Vector(0.0, 0.0, 0.0),
  34.             Vector& scal= Vector(1.0, 1.0, 1.0));
  35.     Parts(Parts*p);
  36.     ~Parts(void);
  37.     virtual void CalcPoints(Matrix& m);
  38.     virtual void CalcView(Matrix& m);
  39. //    Matrix GetMatrix(Matrix& m = Matrix(1));
  40.     Matrix GetMatrix(void);
  41.     void GetMatrix(Matrix& move, Matrix& rot, Matrix& scal);
  42.     void SetRotationParameter(Matrix& m);
  43.     void Trans(SelectType t);
  44. //    Parts *FileRead(char *filename);
  45. static     int FileRead(Parts* (&p), CameraParts* &c, char *filename, char *initialdir);
  46.     static void SetLightType(LightType t) {lighttype = t;}
  47.     static LightType GetLightType(void) {return lighttype;}
  48.     int FileWrite(CameraParts *c, char *filename, char *initialdir);
  49.     virtual void PartsWrite(FILE *fp, char *initialdir, int length);
  50. };
  51.  
  52. class CameraParts : public Parts {
  53. public:
  54.     Vector target;
  55.     double angle;
  56.     CameraParts(
  57.         Vector& pos = Vector(1000.0, 0.0, 0.0),
  58.         Vector& target = Vector(0.0, 0.0, 0.0));
  59.     virtual void CalcPoints(Matrix& m);
  60.     virtual void CalcView(Matrix& m);
  61.     void SetAngle(double rad);
  62.     void SetTarget(Vector& v);
  63.     virtual void PartsWrite(FILE *fp, char *initialdir, int length);
  64.  
  65. private:
  66.     int l1[CameraLines], l2[CameraLines];
  67.     int px[CameraPoints], py[CameraPoints], pz[CameraPoints];
  68. };
  69.  
  70. static const int MaxParts = 256;
  71. class CombinedParts : public Parts {
  72. public:
  73.     Parts *parts[MaxParts];
  74.     int nparts;
  75.  
  76.     CombinedParts(void);
  77.     ~CombinedParts(void);
  78.     int AddParts(Parts* p);
  79.     int DeleteParts(Parts* p);
  80.     void MoveParts(Matrix& m, double scalerate);
  81.     void MoveParts(void);
  82.     void DeleteAllParts(void);
  83.     void AddAllParts(Parts* p);
  84.     void CalcSize(Parts* p);
  85.     void CalcSizeAll(void);
  86.  
  87.     virtual void CalcPoints(Matrix& m);
  88.     virtual void CalcView(Matrix& m);
  89.  
  90.     Vector orig_position;
  91. private:
  92.  
  93.     Vector old_position;
  94.     Vector old_scale;
  95.     Vector old_rotation;
  96. };
  97.  
  98. #endif