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

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

GTPD - Jungle Rumble - integrate into GTP SVN structure

Line 
1#pragma once
2#include <vector> // Standard-Vektor einschließen
3#include <string>
4#include <fstream>
5#include "./GameManager.h"
6#include "./Object3d.h"
7#include <boost/shared_ptr.hpp>
8#include <new>
9#include <exception>
10#include "Node.h"
11#include "Vector.h"
12
13using namespace std;
14
15#define SPTR boost::shared_ptr
16
17class Terrain : public Node
18{
19public:
20        Terrain(void);
21        ~Terrain(void);
22        void generateTerrain(std::string filename, int _numVertsPerRow, int _numVertsPerCol);
23        float getHeight(float x, float y);
24        float getOriginalHeight(float x, float y);
25        float getSizeX();
26        float getSizeZ();
27        float getSlopeX(float x, float z);
28        float getSlopeZ(float x, float z);
29        void impact(float x, float z, int power);
30        void setTextures(std::string texture0, std::string texture1, std::string texture2);
31       
32private:
33        struct Vertex
34        {
35                Vertex(float _x, float _y, float _z, float _nx, float _ny, float _nz, DWORD _color, float _u, float _v)
36                {
37                        x = _x; 
38                        y = _y;   
39                        z = _z;
40                        nx = _nx;
41                        ny = _ny;
42                        nz = _nz;
43                        color = _color;
44                        u = _u;
45                        v = _v;
46                }
47
48                float x, y, z;
49                float nx, ny, nz;
50                DWORD color;
51                float u, v;
52               
53                enum FVF
54                {
55                        FVF_Flags = D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE | D3DFVF_TEX1
56                };
57        };
58
59        std::vector<float> readRawFile(std::string fileName);
60        void createTerrainPatches();
61        void updatePatch(int patchNumber, int x_top, int z_top, int x_bottom, int z_bottom, int powerRadius, float impactheight, int globalImpCenterX, int globalImpCenterZ, int patch_x, int patch_z);
62        Vector *getNormals();
63        void loadEffect();
64
65        std::vector<float> heightmap;
66        std::vector<float> originalHeightmap;
67        int numVertsPerRow;
68        int numVertsPerCol;
69        float cellSpacing;
70        float heightScale;
71        int numVertices;
72        int patchSize;
73        int numberOfPatches;
74
75        std::string texture0;
76        std::string texture1;
77        std::string texture2;
78        std::string texture3;
79       
80        std::vector<Object3d*> terrainPatches;
81       
82        Vector *normals;
83
84        D3DMATERIAL9 *standardMats;
85        std::vector<IDirect3DTexture9*> Textures;
86
87        //effect stuff:
88        ID3DXEffect* TerrainEffect;
89       
90        //shader technique:
91        D3DXHANDLE TexHandleTop;
92        D3DXHANDLE TexHandleSlope;
93        D3DXHANDLE TexHandleBottom;
94        D3DXHANDLE AmbientHandle;
95        D3DXHANDLE SunDirectionHandle; 
96        D3DXHANDLE ShaderTechHandle;
97};
Note: See TracBrowser for help on using the repository browser.