Exemplo n.º 1
0
        public Vector3[] GetAnchorPoints()
        {
            if (isChange == false)
            {
                return(anchorPointsSource);
            }
            isChange = false;

            Vector3 center = transform.position;
            Vector3 size   = transform.lossyScale;
            float   angle  = -transform.eulerAngles.y;

            anchorPointsSource[0] = new Vector3(size.x * -0.5F, 0F, size.z * -0.5F);
            anchorPointsSource[1] = new Vector3(size.x * 0.5F, 0F, size.z * 0.5F);
            anchorPointsSource[2] = new Vector3(size.x * -0.5F, 0F, size.z * 0.5F);
            anchorPointsSource[3] = new Vector3(size.x * 0.5F, 0F, size.z * -0.5F);

            size.x += extended;
            size.z += extended;

            anchorPoints[0] = new Vector3(size.x * -0.5F, 0F, size.z * -0.5F);
            anchorPoints[1] = new Vector3(size.x * 0.5F, 0F, size.z * 0.5F);
            anchorPoints[2] = new Vector3(size.x * -0.5F, 0F, size.z * 0.5F);
            anchorPoints[3] = new Vector3(size.x * 0.5F, 0F, size.z * -0.5F);

            min.x = min.z = 9999999F;
            max.x = max.z = -9999999F;
            for (int i = 0; i < anchorPoints.Length; i++)
            {
                Vector3 point      = anchorPoints[i];
                float   anglePoint = HMath.angle(0f, 0f, point.x, point.z);
                float   angleEnd   = angle + anglePoint;
                float   length     = point.magnitude;
                float   radian     = HMath.angleToRadian(angleEnd);

                point.x         = HMath.radianPointX(radian, length, 0f);
                point.z         = HMath.radianPointY(radian, length, 0f);
                point          += center;
                anchorPoints[i] = point;
                if (point.x < min.x)
                {
                    min.x = point.x;
                }
                if (point.z < min.z)
                {
                    min.z = point.z;
                }
                if (point.x > max.x)
                {
                    max.x = point.x;
                }
                if (point.z > max.z)
                {
                    max.z = point.z;
                }


                point                 = anchorPointsSource[i];
                anglePoint            = HMath.angle(0f, 0f, point.x, point.z);
                angleEnd              = angle + anglePoint;
                length                = point.magnitude;
                radian                = HMath.angleToRadian(angleEnd);
                point.x               = HMath.radianPointX(radian, length, 0f);
                point.z               = HMath.radianPointY(radian, length, 0f);
                point                += center;
                anchorPointsSource[i] = point;
            }

            anchorPoints2[0] = anchorPoints[1];
            anchorPoints2[1] = anchorPoints[2];
            anchorPoints2[2] = anchorPoints[0];
            anchorPoints2[3] = anchorPoints[3];

            return(anchorPoints);
        }