protected void HandlePreviewViewRange2D()
            {
                Vector2 oldPos   = Vector2.zero;
                Vector2 firstPos = Vector2.zero;

                for (int i = 0; i < master.E_PreviewViewRangeSteps; i++)
                {
                    float   curAngle    = (float)i / master.E_PreviewViewRangeSteps * Mathf.PI * 2f;
                    Vector2 localVector = new Vector2(Mathf.Cos(curAngle), Mathf.Sin(curAngle));
                    curAngle *= Mathf.Rad2Deg;

                    float deltaAngle = Mathf.Abs(Mathf.DeltaAngle(curAngle, 0f));
                    if (_data.complexDetection == false || deltaAngle <= _data.targetForwardDetectionAngle * 0.5f)
                    {
                        localVector *= _data.targetForwardDetectionDistance;
                    }
                    else if (deltaAngle <= (_data.targetForwardDetectionAngle + _data.targetDetectionTransitionAngle) * 0.5f)
                    {
                        float progress = (deltaAngle - (_data.targetForwardDetectionAngle * 0.5f)) / (_data.targetDetectionTransitionAngle * 0.5f);
                        localVector *= Mathf.Lerp(_data.targetForwardDetectionDistance, _data.targetBackwardDetectionDistance, Mathf.Pow(progress, _data.targetDetectionTransitionPow));
                    }
                    else
                    {
                        localVector *= _data.targetBackwardDetectionDistance;
                    }

                    Vector3 finalPos;
                    if (_data.complexDetection == false)
                    {
                        finalPos = Position2D + localVector;
                    }
                    else
                    {
                        finalPos = Position2D.ToV3() + PinouUtils.Transform.TransformVector(localVector.ToV3(localVector.x).SetX(0f), Quaternion.LookRotation(Forward, Vector3.up));
                    }

                    if (i > 0)
                    {
                        Gizmos.DrawLine(finalPos, oldPos);
                    }
                    else
                    {
                        firstPos = finalPos;
                    }
                    oldPos = finalPos;
                }
                Gizmos.DrawLine(firstPos, oldPos);

                if (master.E_rangeTester != null)
                {
                    Gizmos.color = IsEntityInViewRange(master.E_rangeTester) ? Color.green : Color.red;
                    Gizmos.DrawSphere(master.E_rangeTester.Position, 0.2f);
                }
            }