00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #if !defined(__INCLUDE_LandVisibilityPatchh_INCLUDE__)
00022 #define __INCLUDE_LandVisibilityPatchh_INCLUDE__
00023
00024 #include <common/Vector.h>
00025
00026 class MipMapPatchIndex;
00027
00028 class LandVisibilityPatch
00029 {
00030 public:
00031 LandVisibilityPatch();
00032 ~LandVisibilityPatch();
00033
00034 void setLocation(int x, int y,
00035 LandVisibilityPatch *leftPatch,
00036 LandVisibilityPatch *rightPatch,
00037 LandVisibilityPatch *topPatch,
00038 LandVisibilityPatch *bottomPatch);
00039 bool setVisible(float distance);
00040 void setNotVisible();
00041 void setRecalculateErrors() { recalculateErrors_ = true; }
00042
00043 int getVisibilityIndex() { return visible_?visibilityIndex_:-1; }
00044 Vector &getPosition() { return position_; }
00045 float getBoundingSize() { return boundingSize_; }
00046
00047 LandVisibilityPatch *getLeftPatch() { return leftPatch_; }
00048 LandVisibilityPatch *getRightPatch() { return rightPatch_; }
00049 LandVisibilityPatch *getTopPatch() { return topPatch_; }
00050 LandVisibilityPatch *getBottomPatch() { return bottomPatch_; }
00051
00052 void draw(MipMapPatchIndex &index, bool simple);
00053 void drawLODLevel(MipMapPatchIndex &index);
00054
00055 protected:
00056 int x_, y_;
00057 int dataOffSet_;
00058 float maxHeight_, minHeight_, boundingSize_;
00059 int dataSize_;
00060 int visibilityIndex_;
00061 bool visible_, recalculateErrors_;
00062 float indexErrors_[6];
00063 Vector position_;
00064 LandVisibilityPatch *leftPatch_;
00065 LandVisibilityPatch *rightPatch_;
00066 LandVisibilityPatch *topPatch_;
00067 LandVisibilityPatch *bottomPatch_;
00068
00069 void calculateErrors();
00070 };
00071
00072 #endif // __INCLUDE_LandVisibilityPatchh_INCLUDE__