public Vector3 GetNewPositionDir(Vector3 point, Vector3[] normalVector, double distancex, double distancey, double distancez)
        {
            Vector3 directionVector = new Vector3(0, 0, 0);

            foreach (Vector3 vector in normalVector)
            {
                directionVector.AddInternal(vector);
            }

            directionVector.NormalizeSafe();
            directionVector.Scale(distancex + distancey);
            Vector3 result = GetVectorDistanceDir(directionVector, point, distancex, distancey, distancez);

            result.x = Math.Max(result.x, 0);
            result.x = Math.Min(result.x, _MaxXExtension);
            result.y = Math.Max(result.y, 0);
            result.y = Math.Min(result.y, _MaxYExtension);
            result.z = Math.Min(result.z, _MaxZExtension);

            if (_RemoveButtonExtension)
            {
                result.z = Math.Max(result.z, 0);
            }

            if (_RemoveTopExtension)
            {
                result.z = Math.Min(result.z, point.z);
            }

            return(result);
        }
        public Vector3 GetNewPosition(Vector3 point, Vector3[] normalVector, double distance)
        {
            Vector3 directionVector = new Vector3(0, 0, 0);

            foreach (Vector3 vector in normalVector)
            {
                directionVector.AddInternal(vector);
            }

            directionVector.NormalizeSafe();
            directionVector.Scale(distance);
            Vector3 result = point.Add(directionVector);

            if (_RemoveButtonExtension)
            {
                result.z = Math.Max(result.z, 0);
            }

            if (_RemoveTopExtension)
            {
                result.z = Math.Min(result.z, point.z);
            }

            return(result);
        }