Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
IndexOutOfRangeException in CurvySplineSegment.LocalFToDistance
#1
I'm getting this error when I try to use the LocalFToDistance method on a spline of roughly 20 units length with certain cache settings, it mostly goes away if I adjust those cache settings but if I pass a TF very close to 1 (i.e. 0.9994 in my last debug test) I get an off by 1 in the index and it errors.

My hacky fix has been to round to 0/1 if my TF very close to either, but I'd like to avoid the hacks if possible!

Code:
 
IndexOutOfRangeException: Index was outside the bounds of the array.
  at FluffyUnderware.Curvy.CurvySplineSegment.LocalFToDistance (System.Single localF) [0x00046] in W:\TestProj\Assets\Plugins\Curvy\Base\CurvySplineSegment.cs:1397
  at FluffyUnderware.Curvy.CurvySpline.TFToDistance (System.Single tf, FluffyUnderware.Curvy.CurvyClamping clamping) [0x0004f] in W:\TestProj\Assets\Plugins\Curvy\Base\CurvySpline.cs:1262
Reply
#2
Hi
Can you please try this https://forum.curvyeditor.com/thread-1127-post-4081.html#pid4081 and let me know if it fixed it?
Thanks
Please consider leaving a review for Curvy. This will help a lot keeping Curvy relevant in the eyes of the Asset Store algorithm.
Reply
#3
This exception means that you're trying to access a collection item by index, using an invalid index. An index is invalid when it's lower than the collection's lower bound or greater than or equal to the number of elements it contains. Indexing an empty list will always throw an exception. Use a method like Add to append the item to the end of the list, or Insert to place the item in the middle of the list somewhere, etc. You cannot index into a c# list if that offset doesn't exist.  IndexOutOfRangeException exception is thrown as a result of developer error. Instead of handling the exception, you should diagnose the cause of the error and correct your code.

Handling the Exception:

Use for-each loop: This automatically handles indices while accessing the elements of an array.

Use Try-Catch: Consider enclosing your code inside a try-catch statement and manipulate the exception accordingly. As mentioned, C# won’t let you access an invalid index and will definitely throw an IndexOutOfRangeException. However, we should be careful inside the block of the catch statement, because if we don’t handle the exception appropriately, we may conceal it and thus, create a bug in your application.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Disabling a CurvySplineSegment results in NullRefException Lupos 1 6 10-02-2023, 09:55 AM
Last Post: _Aka_
  Custom CurvySplineSegment prefabs Lupos 1 10 10-02-2023, 09:36 AM
Last Post: _Aka_
Brick Delete CurvySplineSegment from the start of a Spline causes UV's to change studentloan 5 7 06-14-2022, 03:14 PM
Last Post: _Aka_
Question IndexOutOfRangeException in CurvySplineSegment.LocalFToDistance function mchangxe 13 3,243 05-06-2021, 12:56 PM
Last Post: _Aka_

Forum Jump: