private void OnDrawGizmosSelected()
        {
            if (!drawGizmos)
            {
                return;
            }

            if (separateGridData == null)
            {
                return;
            }

            GUPGrid.GroupData[] groupDatas = separateGridData.GetGroupDatas();

            if (groupDatas == null || groupDatas.Length <= 0)
            {
                return;
            }

            Gizmos.color = groupDatas[currentIndex].editorColor;

            Ray ray = HandleUtility.GUIPointToWorldRay(Event.current.mousePosition);

            RaycastHit[] hits = Physics.RaycastAll(ray);

            Vector3 point = Vector3.zero;

            bool allowHit = false;

            foreach (RaycastHit hit in hits)
            {
                if (hit.collider != null && hit.collider == boxCollider)
                {
                    point    = hit.point;
                    allowHit = true;
                }
            }

            if (!allowHit)
            {
                return;
            }

            float mag = Mathf.Sqrt((grid.cellHeight * grid.cellHeight) + (grid.cellWidth * grid.cellWidth)) * 0.5f;

            Vector3[] vertices = grid.GetVertices();

            Vector3 a = point + (vertices[0] - grid.transform.position).normalized * mag;
            Vector3 b = point + (vertices[1] - grid.transform.position).normalized * mag;
            Vector3 c = point + (vertices[2] - grid.transform.position).normalized * mag;
            Vector3 d = point + (vertices[3] - grid.transform.position).normalized * mag;

            Gizmos.DrawLine(a, d);
            Gizmos.DrawLine(b, c);

            UnityEditor.Handles.Label(point + Vector3.up, groupDatas[currentIndex].indices.Count.ToString());
        }
Exemple #2
0
        private Vector3[] GetGizmoVertices(Vector3 point)
        {
            Vector3[] gridVerts = grid.GetVertices();

            Vector3 a = gridVerts[0];
            Vector3 b = gridVerts[1];
            Vector3 c = gridVerts[2];
            Vector3 d = gridVerts[3];

            float mag = Mathf.Clamp(grid.cellWidth * 0.2f, grid.cellWidth * 0.2f, grid.cellHeight * 0.2f);

            Vector3 dir1 = (a - d).normalized * mag;
            Vector3 dir2 = (b - c).normalized * mag;

            Vector3 pA = point + dir1;
            Vector3 pB = point + dir2;
            Vector3 pC = point - dir2;
            Vector3 pD = point - dir1;

            return(new Vector3[] { pA, pB, pC, pD });
        }