00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef __TERRAINCOMPONENT_H__
00017 #define __TERRAINCOMPONENT_H__
00018
00019
00020 #include "../../dependencies.h"
00021 #include "SceneComponent.h"
00022
00023
00024
00026 class TerrainComponent : public SceneComponent
00027 {
00028 public:
00029
00030
00033 TerrainComponent(Entity *parent);
00042 TerrainComponent(Entity *parent, const std::string &fileName,
00043 const vector3df &rotation = vector3df(0.0f, 0.0f, 0.0f),
00044 const vector3df &scale = vector3df(1.0f, 1.0f, 1.0f),
00045 const SColor &vertexColor = SColor(255, 255, 255, 255), s32 maxLOD = 5,
00046 s32 smoothFactor = 0);
00048 ~TerrainComponent();
00049
00050
00053 static TerrainComponent* refFactory(Entity *parent);
00056 static TerrainComponent* refFactory(Entity *parent, const std::string &fileName,
00057 const vector3df &rotation, const vector3df &scale,
00058 const SColor &vertexColor, s32 maxLOD, s32 smoothFactor);
00059
00060
00063 ITerrainSceneNode* getTerrainSceneNode();
00064
00066 const aabbox3df& getBoundingBox() const;
00068 const aabbox3df& getBoundingBox(s32 patchX, s32 patchZ) const;
00070 f32 getHeight(f32 x, f32 y);
00073 IMesh* getMesh();
00075 const vector3df& getTerrainCenter() const;
00076
00081 bool loadHeightMap(const std::string &fileName, const SColor &vertexColor =
00082 SColor(255, 255, 255, 255), s32 smoothFactor = 0);
00083
00093 void scaleTexture(f32 scale = 1.0f, f32 scale2 = 0.0f);
00094
00095
00096 private:
00097
00098
00099 ITerrainSceneNode *mTerrainSN;
00100 };
00101
00102
00103
00105 extern void bindTerrainComponent(asIScriptEngine *engine);
00106
00107 #endif