diff --git a/Source/Editor/Modules/UIModule.cs b/Source/Editor/Modules/UIModule.cs index 0e482441e..c02992041 100644 --- a/Source/Editor/Modules/UIModule.cs +++ b/Source/Editor/Modules/UIModule.cs @@ -714,6 +714,7 @@ namespace FlaxEditor.Modules _menuToolsBuildCSGMesh = cm.AddButton("Build CSG mesh", inputOptions.BuildCSG, Editor.BuildCSG); _menuToolsBuildNavMesh = cm.AddButton("Build Nav Mesh", inputOptions.BuildNav, Editor.BuildNavMesh); _menuToolsBuildAllMeshesSDF = cm.AddButton("Build all meshes SDF", inputOptions.BuildSDF, Editor.BuildAllMeshesSDF); + _menuToolsBuildAllMeshesSDF.LinkTooltip("Generates Sign Distance Field texture for all meshes used in loaded scenes. Use with 'F' key pressed to force rebuild SDF for meshes with existing one."); cm.AddSeparator(); cm.AddButton("Game Cooker", Editor.Windows.GameCookerWin.FocusOrShow); _menuToolsCancelBuilding = cm.AddButton("Cancel building game", () => GameCooker.Cancel()); diff --git a/Source/Engine/Core/Math/CollisionsHelper.cpp b/Source/Engine/Core/Math/CollisionsHelper.cpp index 5a40fae6e..dee415e4a 100644 --- a/Source/Engine/Core/Math/CollisionsHelper.cpp +++ b/Source/Engine/Core/Math/CollisionsHelper.cpp @@ -620,14 +620,9 @@ bool Collision::RayIntersectsTriangle(const Ray& ray, const Vector3& a, const Ve Real rayDistance = edge2.X * distanceCrossEdge1.X + edge2.Y * distanceCrossEdge1.Y + edge2.Z * distanceCrossEdge1.Z; rayDistance *= inverseDeterminant; - // Check if the triangle is behind the ray origin - if (rayDistance < 0.0f) - { - return false; - } - + // Check if the triangle is in front the ray origin distance = rayDistance; - return true; + return rayDistance >= 0.0f; } bool CollisionsHelper::RayIntersectsTriangle(const Ray& ray, const Vector3& vertex1, const Vector3& vertex2, const Vector3& vertex3, Real& distance, Vector3& normal) diff --git a/Source/Engine/Core/Math/Ray.cpp b/Source/Engine/Core/Math/Ray.cpp index 414814c4a..5bee8c2c4 100644 --- a/Source/Engine/Core/Math/Ray.cpp +++ b/Source/Engine/Core/Math/Ray.cpp @@ -12,11 +12,6 @@ String Ray::ToString() const return String::Format(TEXT("{}"), *this); } -Vector3 Ray::GetPoint(Real distance) const -{ - return Position + Direction * distance; -} - Ray Ray::GetPickRay(float x, float y, const Viewport& viewport, const Matrix& vp) { Vector3 nearPoint(x, y, 0.0f); diff --git a/Source/Engine/Core/Math/Ray.h b/Source/Engine/Core/Math/Ray.h index cb2aa6419..65e9f1512 100644 --- a/Source/Engine/Core/Math/Ray.h +++ b/Source/Engine/Core/Math/Ray.h @@ -79,7 +79,10 @@ public: /// /// The distance from ray origin. /// The calculated point. - Vector3 GetPoint(Real distance) const; + FORCE_INLINE Vector3 GetPoint(Real distance) const + { + return Position + Direction * distance; + } /// /// Determines if there is an intersection between ray and a point.