#ifndef OBJ3D_INCLUDED #define OBJ3D_INCLUDED #include #include "OrderTable.h" #include "Pad.h" const u_long MODEL_MAP_OFFSET = 1 ; const u_long MODEL_DATA_OFFSET = 3 ; class CDrawableObject { public: virtual void draw( COrderTableHeader& h) ; }; typedef CDrawableObject* LPDRAWABLEOBJECT ; class CWorld { protected: u_long m_lIndex ; public: CWorld( ) ; CWorld& operator+=( LPDRAWABLEOBJECT ) ; LPDRAWABLEOBJECT operator[]( u_long n ) const ; void draw( ) ; void init( ) ; u_long objectCount( ) const ; }; class CCord { protected: long m_x, m_y, m_z ; public: long& x( ) ; long& y( ) ; long& z( ) ; const long& x( ) const ; const long& y( ) const ; const long& z( ) const ; CCord( long xx = 0, long yy = 0 , long zz = 0 ) ; // CCord( const MATRIX& m ) // { *this = m ; } CCord( CCord& c ) { *this = c ; } // CCord& operator=( const MATRIX& m ) // { x( ) = m.x( ) ; y( ) = m.y( ) ; z( ) = m.z( ) ; return *this; } CCord& operator=( CCord& c ) { x( ) = c.x( ) ; y( ) = c.y( ) ; z( ) = c.z( ) ; return *this ;} CCord& operator +=( const CCord& c ) ; CCord& operator -=( const CCord& c ) ; CCord& operator+( const CCord& c ) ; CCord& operator-( const CCord& c ) ; bool operator==( const CCord& c ) const ; bool operator <( const CCord& c ) const ; bool operator >( const CCord& c ) const ; bool operator !=( const CCord& c ) const ; }; class CLight : public GsF_LIGHT { enum lightMode { lightNormal, lightFog } ; protected: long m_lNumber ; public: CLight( long lNumber = 0 ) ; static void fog ( ) ; static void normal( ) ; static void ambient( long r, long g, long b ) ; long& number( ) ; const long& number( ) const ; void position( const CCord& c ) ; void color( u_char rr, u_char gg, u_char bb ) ; void on( ) ; CLight& operator--( ) ; CLight& operator++( ) ; }; class CView : public GsRVIEW2 { public: CView( ) ; void projection( const CCord& ) ; void reference( const CCord& ) ; void distance( int ) ; void parent( _GsCOORDINATE2* pParent ) ; void twist( int ) ; bool set( ) ; }; class C3DObject : public CDrawableObject , public GsDOBJ2 , public GsCOORDINATE2 , public SVECTOR { protected: char* m_pstrName ; u_long m_lModel ; SVECTOR m_startVector ; public: C3DObject( ) ; void initCords( ) ; const char* name( ) const ; void name( const char* cpstrName ) ; void model( const u_long lModelAddress ) ; const u_long model( ) const ; void invalidate( ) ; virtual void draw( COrderTableHeader& header ) ; void position( const long lX , const long lY , const long lZ ) ; void position( const CCord& ) ; virtual void rotate( int x, int y, int z ) ; void advance( int nSpeed ) ; }; class CCube : public C3DObject { public: CCube( ) ; ~CCube( ) ; void servicePad( CAccellPad& ) ; void draw( COrderTableHeader& header ) ; }; #endif // OBJ3D_INCLUDED