home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / 3DTOSHI2.ZIP / mpg3d / include / G3dobj.h < prev    next >
C/C++ Source or Header  |  1996-04-20  |  4KB  |  129 lines

  1.  
  2. // g3dobj.h
  3. //
  4. // Copyright (c) 1996 by Toshiaki Tsuji, all rights reserved.
  5.  
  6. #ifndef __G3DOBJ_H__
  7. #define __G3DOBJ_H__
  8.  
  9. #include "stdgfx.h"
  10. #include "g3dpoly.h"
  11.  
  12. #define OBJECT_VISIBLE ((LONG)1<<0)
  13.  
  14. struct CAMERADATA
  15.   {
  16.     FLPVECTOR3D CameraPoint;
  17.     LONG NumVisibleShapes;
  18.     G3DSHAPE **VisibleShapes;
  19.     float ViewDistance;
  20.     float CenterX,CenterY;
  21.     RECTANGLE ViewPort;
  22.     float NearClipZ;
  23.     LONG ShadeFlags;
  24.     LONG FaceFlags;
  25.     BOOLEAN DepthCueing;
  26.     float DepthScale;
  27.     BOOLEAN DoHaze;
  28.     float HazeScale;
  29.     LONG HazeLevels;
  30.   }; // End of CAMERADATA
  31.  
  32. struct COLLIDEDATA
  33.   {
  34.     G3DSHAPE *Shape;
  35.     float CollideT;  
  36.   }; // End of COLLIDEDATA
  37.  
  38. class G3DLIGHT;
  39.  
  40. class G3DOBJECT
  41.   {
  42.     protected :
  43.       LONG Type;
  44.       CHAR Name[32];
  45.       LONG ID;
  46.       G3DLIGHT *LightSource;
  47.       float Radius;
  48.       float MaxVisibleDistance;
  49.       float ScaleFactor;
  50.       LONG Flags;
  51.       BOOLEAN Initialized;
  52.       
  53.       FLPVECTOR3D FLPAngle;
  54.       FLPVECTOR3D FLPLocalPosition;
  55.       FLPVECTOR3D FLPWorldPosition;
  56.       FLPVECTOR3D FLPCameraPosition;
  57.       FLPVECTOR3D FLPLocalCenter;
  58.       FLPVECTOR3D FLPWorldCenter;
  59.       FLPVECTOR3D FLPCameraCenter;
  60.       
  61.       G3DMATRIX LocalMatrix;
  62.       G3DMATRIX ResultMatrix;
  63.  
  64.       LINKEDLIST<G3DOBJECT*> *SubObjectList;
  65.       virtual VOID UpdateLocalToWorld ();
  66.       virtual VOID UpdateWorldToCamera ( G3DMATRIX CameraMatrix,
  67.                                          CAMERADATA *CameraData );
  68.       virtual VOID CountShapes ( LONG *Count );
  69.       virtual BOOLEAN ClipObject ( CAMERADATA *CameraData );
  70.                                                
  71.     public :
  72.       BOOLEAN Moved;
  73.       BOOLEAN Rotated;
  74.     
  75.       G3DOBJECT ();
  76.       virtual ~G3DOBJECT ();
  77.  
  78.       VOID SetID ( LONG NewID ) { ID = NewID; };
  79.       LONG GetID () { return ID; };
  80.  
  81.       VOID SetScaleFactor ( float ScaleFactor );
  82.       float GetScaleFactor () { return ScaleFactor; };
  83.  
  84.       VOID SetName ( STRING NewName );
  85.       STRING GetName () { return Name; };
  86.  
  87.       VOID SetMaxVisibleDistance ( float Distance );
  88.       float GetMaxVisibleDistance () { return MaxVisibleDistance; };
  89.       
  90.       VOID SetLightSource ( G3DLIGHT *Light ) { LightSource = Light; };
  91.       G3DLIGHT* GetLightSource () { return LightSource; };
  92.       
  93.       LONG GetObjectType () { return Type; };
  94.       virtual VOID SetPosition ( float x, float y, float z );
  95.       virtual VOID SetAngle ( float x, float y, float z );
  96.       float GetRadius () { return Radius; };
  97.       FLPVECTOR3D GetAngle () { return FLPAngle; };
  98.       FLPVECTOR3D GetLocalPosition () { return FLPLocalPosition; };
  99.       FLPVECTOR3D GetWorldPosition () { return FLPWorldPosition; };
  100.       FLPVECTOR3D GetLocalCenter () { return FLPLocalCenter; };
  101.       FLPVECTOR3D GetWorldCenter () { return FLPWorldCenter; };
  102.  
  103.       VOID TransformLocalToWorld ( G3DMATRIX ParentMatrix );
  104.       VOID TransformWorldToCamera ( G3DMATRIX CameraMatrix,
  105.                                     CAMERADATA *CameraData ); 
  106.  
  107.       VOID InitLocalMatrix ();
  108.       virtual VOID Init ();
  109.  
  110.       BOOLEAN IsObjectVisible () { return (Flags&OBJECT_VISIBLE); };
  111.       VOID CountNumShapes ( LONG *Count );
  112.  
  113.       G3DOBJECT* FindObjectByName ( STRING SearchName );
  114.       G3DOBJECT* FindObjectByID ( LONG SearchID );
  115.  
  116.       VOID Move ( float xt, float yt, float zt );
  117.       VOID Rotate ( float xa, float ya, float za );
  118.  
  119.       virtual VOID ComputeCenter ();
  120.       virtual float ComputeRadius ();
  121.       virtual VOID CheckCollision ( FLPVECTOR3D StartPt, FLPVECTOR3D EndPt,
  122.                                     COLLIDEDATA* CollideList, LONG *CurNum, LONG MaxNum,
  123.                                     float CollideDist, float Gap );
  124.   }; // End of G3DOBJECT
  125.  
  126. #endif
  127.  
  128.  
  129.