예제 #1
0
    public static int GetDifferenceInDirection(Vector3 position, Vector3 direction)
    {
        direction = direction.normalized;
        List <Vector3> inColumn    = new List <Vector3> ();
        Vector3        valueFinder = VectorHelper.BinaryInverse(direction);

        valueFinder = VectorHelper.Abs(valueFinder);
        Vector3 columnPosition = VectorHelper.Multiply(position, valueFinder);
        Vector3 valueGetter    = VectorHelper.Abs(direction);
        float   min            = -1;

        foreach (Vector3Int key in Level.Singleton.Entities.Keys)
        {
            Vector3 keyV = key.PositionFloats;
            if (!(position == keyV) &&
                VectorHelper.Eq(VectorHelper.Multiply(keyV, valueFinder), columnPosition))
            {
                Vector3 directionTemp = keyV - position;
                float   diff          = Vector3.Dot(direction, directionTemp);
                if (diff > 0)
                {
                    if (min == -1)
                    {
                        min = diff;
                    }
                    else
                    {
                        min = Mathf.Min(min, diff);
                    }
                }
            }
        }
        return(Mathf.RoundToInt(min));
    }