Skip to content

Commit a511b1c

Browse files
committed
Fixes visual for invalid normals
1 parent cde4f3d commit a511b1c

File tree

4 files changed

+10
-6
lines changed

4 files changed

+10
-6
lines changed

Runtime/Shapes/Arrow.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public void Draw(Color color) {
2525
headLength = VisualPhysicsSettingsHandler.GetEditorSettings().RegularArrowLength;
2626
}
2727

28-
Quaternion rot = direction == Vector3.zero ? Quaternion.identity : Quaternion.LookRotation(direction);
28+
Quaternion rot = direction == Vector3.zero || VisualUtils.IsNan(direction) ? Quaternion.identity : Quaternion.LookRotation(direction);
2929
Vector3 backDir = Vector3.back * headLength;
3030
Vector3 right = rot * Quaternion.Euler(headAngle, 0, 0) * backDir;
3131
Vector3 left = rot * Quaternion.Euler(-headAngle, 0, 0) * backDir;

Runtime/Shapes/Circle.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public void Draw(Color color) {
3131
cachePosition.y = sin;
3232
cachePosition.z = 0;
3333

34-
Quaternion rot = upDirection == Vector3.zero ? Quaternion.identity : Quaternion.LookRotation(upDirection);
34+
Quaternion rot = upDirection == Vector3.zero || VisualUtils.IsNan(upDirection) ? Quaternion.identity : Quaternion.LookRotation(upDirection);
3535

3636
cachePosition = rot * cachePosition;
3737
cachePosition += origin;

Runtime/VisualUtils.cs

+7-3
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ internal static void DrawCircle(in Vector3 center, in Vector3 upwardDirection, i
7979
cachePosition.y = sin;
8080
cachePosition.z = 0;
8181

82-
Quaternion rot = upwardDirection == Vector3.zero ? Quaternion.identity : Quaternion.LookRotation(upwardDirection);
82+
Quaternion rot = upwardDirection == Vector3.zero || IsNan(upwardDirection) ? Quaternion.identity : Quaternion.LookRotation(upwardDirection);
8383

8484
cachePosition = rot * cachePosition;
8585
cachePosition += center;
@@ -110,7 +110,7 @@ internal static void DrawNormalCircle(in Vector3 center, in Vector3 upwardDirect
110110
cachePosition.y = sin;
111111
cachePosition.z = 0;
112112

113-
Quaternion rot = upwardDirection == Vector3.zero ? Quaternion.identity : Quaternion.LookRotation(upwardDirection);
113+
Quaternion rot = upwardDirection == Vector3.zero || IsNan(upwardDirection) ? Quaternion.identity : Quaternion.LookRotation(upwardDirection);
114114

115115
cachePosition = rot * cachePosition;
116116
cachePosition += center + upwardDirection * settings.CircleDistance;
@@ -280,7 +280,7 @@ internal static void DrawArrow(
280280
arrowHeadLength = VisualPhysicsSettingsHandler.GetEditorSettings().RegularArrowLength;
281281
}
282282

283-
Quaternion rot = direction == Vector3.zero ? Quaternion.identity : Quaternion.LookRotation(direction);
283+
Quaternion rot = direction == Vector3.zero || IsNan(direction) ? Quaternion.identity : Quaternion.LookRotation(direction);
284284
Vector3 backDir = Vector3.back * arrowHeadLength;
285285
Vector3 right = rot * Quaternion.Euler(arrowHeadAngle, 0, 0) * backDir;
286286
Vector3 left = rot * Quaternion.Euler(-arrowHeadAngle, 0, 0) * backDir;
@@ -310,5 +310,9 @@ internal static void DrawRay(in Vector3 start, in Vector3 direction, in Color co
310310
Debug.DrawRay(start, direction, color, drawTime, true);
311311
#endif
312312
}
313+
314+
internal static bool IsNan(Vector3 vector) {
315+
return float.IsNaN(vector.x) || float.IsNaN(vector.y) || float.IsNaN(vector.z);
316+
}
313317
}
314318
}

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "com.nomnom.raycast-visualization",
3-
"version": "2.2.0",
3+
"version": "2.2.1",
44
"displayName": "Nomnom's Raycast Visualization",
55
"description": "This asset allows users to view debug visuals for all raycast methods.",
66
"unity": "2020.3",

0 commit comments

Comments
 (0)