Browse Source

Apply & further improve WorldToHeightMap() fix from Lumak.

Lasse Öörni 9 years ago
parent
commit
46e434141e
3 changed files with 7 additions and 5 deletions
  1. 1 0
      Docs/Urho3D.dox
  2. 1 0
      README.md
  3. 5 5
      Source/Urho3D/Graphics/Terrain.cpp

+ 1 - 0
Docs/Urho3D.dox

@@ -100,6 +100,7 @@ Urho3D development, contributions and bugfixes by:
 - AGreatFish
 - Enhex
 - Firegorilla
+- Lumak
 - Magic.Lixin
 - Mike3D
 - Modanung

+ 1 - 0
README.md

@@ -52,6 +52,7 @@ Urho3D development, contributions and bugfixes by:
 - AGreatFish
 - Enhex
 - Firegorilla
+- Lumak
 - Magic.Lixin
 - Mike3D
 - Modanung

+ 5 - 5
Source/Urho3D/Graphics/Terrain.cpp

@@ -481,12 +481,12 @@ IntVector2 Terrain::WorldToHeightMap(const Vector3& worldPosition) const
         return IntVector2::ZERO;
 
     Vector3 position = node_->GetWorldTransform().Inverse() * worldPosition;
-    int xPos = (int)((position.x_ - patchWorldOrigin_.x_) / spacing_.x_);
-    int zPos = (int)((position.z_ - patchWorldOrigin_.y_) / spacing_.z_);
-    Clamp(xPos, 0, numVertices_.x_);
-    Clamp(zPos, 0, numVertices_.y_);
+    int xPos = (int)((position.x_ - patchWorldOrigin_.x_) / spacing_.x_ + 0.5f);
+    int zPos = (int)((position.z_ - patchWorldOrigin_.y_) / spacing_.z_ + 0.5f);
+    xPos = Clamp(xPos, 0, numVertices_.x_ - 1);
+    zPos = Clamp(zPos, 0, numVertices_.y_ - 1);
 
-    return IntVector2(xPos, numVertices_.y_ - zPos);
+    return IntVector2(xPos, numVertices_.y_ - 1 - zPos);
 }
 
 void Terrain::CreatePatchGeometry(TerrainPatch* patch)