source: GTP/trunk/App/Games/Jungle_Rumble/src/Object3d.h @ 1378

Revision 1378, 2.1 KB checked in by giegl, 18 years ago (diff)

GTPD - Jungle Rumble - integrate into GTP SVN structure

Line 
1#pragma once
2#include "./Node.h"
3#include <string>
4#include <boost/shared_ptr.hpp>
5#include <vector>
6#include "NxCooking.h"
7#include "Stream.h"
8
9using namespace std;
10
11#define SPTR boost::shared_ptr
12
13class Object3d : public Node {
14public:
15        Object3d(void);
16        Object3d(std::string file);
17        ~Object3d(void);
18
19        LPD3DXMESH* getMesh();
20        void setMesh(LPD3DXMESH *mesh);
21        LPD3DXPMESH* getProgressiveMesh();
22        void loadMeshFromFile(std::string filename);
23        void computeNormals();
24
25        LPD3DXMESH myMesh;
26        LPD3DXPMESH myProgressiveMesh;
27       
28        bool isModelLoaded();
29        void setModelLoaded(bool value);
30        void setXFilename(std::string _xfilename);
31        void generateAndUsePMesh();
32        void generateAndUsePMesh(float *weights);
33        bool isPMesh();
34        void setDetail(Vector ObjectCenter);
35        DWORD *adjacencyInfo;
36       
37        std::vector<D3DMATERIAL9> Materials;
38        std::vector<IDirect3DTexture9*> Textures;
39        DWORD g_dwNumMaterials;   // Number of materials
40
41        bool isManagedByResourceManager;
42
43       
44        //Physic Stuff
45        static const int COL_MESH               = 0;
46        static const int COL_HEIGHTFIELD= 1;
47        static const int COL_CONVEX             = 2;
48        static const int COL_PMAP               = 3;
49        virtual void generatePhysicMesh(int type=0);
50        NxShapeDesc* getPhysicShape();
51
52        virtual Node* clone();
53        //public that Terrain can update the patches
54        NxTriangleMeshShapeDesc         pMeshShapeDesc;
55
56        virtual void OnDestroyDevice( void* pUserContext );
57        virtual HRESULT OnResetDevice( IDirect3DDevice9* pd3dDevice, const D3DSURFACE_DESC* pBackBufferSurfaceDesc, void* pUserContext );
58protected:
59        Object3d* cloneObject3d(Object3d* obj);
60        std::string xfilename;
61
62        void computeAdjacency();
63
64        bool isAPMesh;
65        bool modelLoaded;
66        bool deleteMesh;
67
68        int maxFaces;
69        int minFaces;
70        int numFacesPerStage[10];
71        int currentFaces;
72
73        //PhysicStuff
74        DWORD*                                          pIndices;
75        NxVec3*                                         pVertices;
76        NxTriangleMesh*                         pTriangleMesh;
77        NxTriangleMeshDesc                      pTriangleMeshDesc;
78       
79        NxConvexMeshDesc                        pConvexDesc;
80        NxConvexShapeDesc                       pConvexShapeDesc;
81        MemoryWriteBuffer*                      writeBuffer;
82        int                                                     shapeType;
83        NxU32 getFileSize(const char* name);
84};
Note: See TracBrowser for help on using the repository browser.