home *** CD-ROM | disk | FTP | other *** search
/ Isometric Game Programming with DirectX 7.0 / Isometric Game Programming.iso / directx / dxf / samples / multimedia / common / include / d3dfile.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-11-04  |  3.8 KB  |  127 lines

  1. //-----------------------------------------------------------------------------
  2. // File: D3DFile.h
  3. //
  4. // Desc: Support code for loading DirectX .X files.
  5. //
  6. // Copyright (c) 1997-2000 Microsoft Corporation. All rights reserved.
  7. //-----------------------------------------------------------------------------
  8. #ifndef D3DFILE_H
  9. #define D3DFILE_H
  10. #include <tchar.h>
  11. #include <d3d8.h>
  12. #include <d3dx8.h>
  13.  
  14.  
  15.  
  16.  
  17. //-----------------------------------------------------------------------------
  18. // Name: class CD3DMesh
  19. // Desc: Class for loading and rendering file-based meshes
  20. //-----------------------------------------------------------------------------
  21. class CD3DMesh
  22. {
  23. public:
  24.     TCHAR               m_strName[512];
  25.  
  26.     LPD3DXMESH          m_pSysMemMesh;    // SysMem mesh, lives through resize
  27.     LPD3DXMESH          m_pLocalMesh;     // Local mesh, rebuilt on resize
  28.     
  29.     DWORD               m_dwNumMaterials; // Materials for the mesh
  30.     D3DMATERIAL8*       m_pMaterials;
  31.     LPDIRECT3DTEXTURE8* m_pTextures;
  32.     BOOL                m_bUseMaterials;
  33.  
  34. public:
  35.     // Rendering
  36.     HRESULT Render( LPDIRECT3DDEVICE8 pd3dDevice, 
  37.                     BOOL bDrawOpaqueSubsets = TRUE,
  38.                     BOOL bDrawAlphaSubsets = TRUE );
  39.  
  40.     // Mesh access
  41.     LPD3DXMESH GetSysMemMesh() { return m_pSysMemMesh; }
  42.     LPD3DXMESH GetLocalMesh()  { return m_pLocalMesh; }
  43.  
  44.     // Rendering options
  45.     VOID    UseMeshMaterials( BOOL bFlag ) { m_bUseMaterials = bFlag; }
  46.     HRESULT SetFVF( LPDIRECT3DDEVICE8 pd3dDevice, DWORD dwFVF );
  47.  
  48.     // Initializing
  49.     HRESULT RestoreDeviceObjects( LPDIRECT3DDEVICE8 pd3dDevice );
  50.     HRESULT InvalidateDeviceObjects();
  51.  
  52.     // Creation/destruction
  53.     HRESULT Create( LPDIRECT3DDEVICE8 pd3dDevice, TCHAR* strFilename );
  54.     HRESULT Create( LPDIRECT3DDEVICE8 pd3dDevice, LPDIRECTXFILEDATA pFileData );
  55.     HRESULT Destroy();
  56.  
  57.     CD3DMesh( TCHAR* strName = _T("CD3DFile_Mesh") );
  58.     virtual ~CD3DMesh();
  59. };
  60.  
  61.  
  62.  
  63.  
  64. //-----------------------------------------------------------------------------
  65. // Name: class CD3DFrame
  66. // Desc: Class for loading and rendering file-based meshes
  67. //-----------------------------------------------------------------------------
  68. class CD3DFrame
  69. {
  70. public:
  71.     TCHAR      m_strName[512];
  72.     D3DXMATRIX m_mat;
  73.     CD3DMesh*  m_pMesh;
  74.     TCHAR      m_strMeshName[512];
  75.  
  76.     CD3DFrame* m_pNext;
  77.     CD3DFrame* m_pChild;
  78.  
  79. public:
  80.     // Matrix access
  81.     VOID        SetMatrix( D3DXMATRIX* pmat ) { m_mat = *pmat; }
  82.     D3DXMATRIX* GetMatrix()                   { return &m_mat; }
  83.  
  84.     CD3DMesh*   FindMesh( TCHAR* strMeshName );
  85.     CD3DFrame*  FindFrame( TCHAR* strFrameName );
  86.     BOOL        EnumMeshes( BOOL (*EnumMeshCB)(CD3DMesh*,VOID*), 
  87.                             VOID* pContext );
  88.  
  89.     HRESULT Destroy();
  90.     HRESULT RestoreDeviceObjects( LPDIRECT3DDEVICE8 pd3dDevice );
  91.     HRESULT InvalidateDeviceObjects();
  92.     HRESULT Render( LPDIRECT3DDEVICE8 pd3dDevice, 
  93.                     BOOL bDrawOpaqueSubsets = TRUE,
  94.                     BOOL bDrawAlphaSubsets = TRUE );
  95.     
  96.     CD3DFrame( TCHAR* strName = _T("CD3DFile_Frame") );
  97.     virtual ~CD3DFrame();
  98. };
  99.  
  100.  
  101.  
  102.  
  103. //-----------------------------------------------------------------------------
  104. // Name: class CD3DFile
  105. // Desc: Class for loading and rendering file-based meshes
  106. //-----------------------------------------------------------------------------
  107. class CD3DFile : public CD3DFrame
  108. {
  109.     HRESULT LoadMesh( LPDIRECT3DDEVICE8 pd3dDevice, LPDIRECTXFILEDATA pFileData, 
  110.                       CD3DFrame* pParentFrame );
  111.     HRESULT LoadFrame( LPDIRECT3DDEVICE8 pd3dDevice, LPDIRECTXFILEDATA pFileData, 
  112.                        CD3DFrame* pParentFrame );
  113. public:
  114.     HRESULT Create( LPDIRECT3DDEVICE8 pd3dDevice, TCHAR* strFilename );
  115.     HRESULT Render( LPDIRECT3DDEVICE8 pd3dDevice );
  116.  
  117.     CD3DFile() : CD3DFrame( _T("CD3DFile_Root") ) {}
  118. };
  119.  
  120.  
  121.  
  122.  
  123. #endif
  124.  
  125.  
  126.  
  127.