public bool IsControllerInsideChunk(ControllerStickBase controller, PointsOnSplineExtension points) { if (SamePosition()) { return(true); } //current data SplineBase.PositionUnits unitPointsOnSpline = points.PositionUnits; SplineBase.PositionUnits unitController = controller.PositionUnits; float currentPosition = controller.PathPosition; //3 points with same units (units of the chunks points, default by Distance) currentPosition = controller.SplineBase.ConvertPathUnit(currentPosition, unitController, unitPointsOnSpline); float a = PositionA(points); float b = PositionB(points); //return true if we are inside a chunk if (b < a) { return(currentPosition <= b || currentPosition >= a); } else { return(currentPosition >= a && currentPosition <= b); } }
public float PositionB(PointsOnSplineExtension points) { return(points == null ? 0 : points.GetWayPoint(B).PathPosition); }