Пример #1
0
        private void OnDrawGizmos()
        {
            if (!showGizmos)
            {
                return;
            }
            Gizmos.color = gizmosColor;

            DrawEvents(eventEnter, onTriggerEnter);
            DrawEvents(eventExit, onTriggerExit);
            DrawEvents(eventStay, onTriggerStay);

            void DrawEvents(UnityEvent ev, bool active)
            {
                for (int i = 0; i < ev.GetPersistentEventCount(); i++)
                {
                    var component = ev.GetPersistentTarget(i) as Component;
                    if (component != null)
                    {
                        Transform t = component.transform;

                        if (t.GetComponent <MeshRenderer>())
                        {
                            var   mr     = t.GetComponent <MeshRenderer>();
                            Color orgCol = Gizmos.color;
                            if (!active)
                            {
                                Gizmos.color = Gizmos.color * .5f;
                            }
                            Gizmos.DrawWireCube(mr.bounds.center, mr.bounds.size + Vector3.one * .1f);
                            AdditionalGizmos.DrawArc(transform.position, mr.bounds.center, options.connectorGravity.y);
                            Gizmos.color = orgCol;
                        }
                        else
                        {
                            Color orgCol = Gizmos.color;
                            if (!active)
                            {
                                Gizmos.color = Gizmos.color * .5f;
                            }
                            Gizmos.DrawWireCube(t.position, Vector3.one);
                            //Gizmos.DrawLine(transform.position, t.position);
                            AdditionalGizmos.DrawArc(transform.position, t.position);
                            Gizmos.color = orgCol;
                        }
                    }
                }
            }

            var orgMatrix = Gizmos.matrix;

            Gizmos.matrix = transform.localToWorldMatrix;
            foreach (var col in GetComponents <Collider2D>())
            {
                if (!col.isTrigger || !col.enabled)
                {
                    continue;
                }
                if (col.GetType() == typeof(BoxCollider2D))
                {
                    BoxCollider2D bc = col as BoxCollider2D;
                    Gizmos.DrawCube((Vector3)bc.offset, Vector3.Scale(Vector3.one, bc.size));
                }
                else if (col.GetType() == typeof(CircleCollider2D))
                {
                    CircleCollider2D sc       = col as CircleCollider2D;
                    Vector3          s        = transform.localScale;
                    float            maxScale = Mathf.Max(s.x, s.y, s.z);
                    Gizmos.DrawSphere((Vector3)sc.offset, sc.radius * maxScale);
                }
            }
            Gizmos.matrix = orgMatrix;
        }
Пример #2
0
        private void OnDrawGizmos()
        {
            if (!showGizmos)
            {
                return;
            }

            Gizmos.color = gizmosColor;

            DrawEvents(eventEnter, onTriggerEnter);
            DrawEvents(eventExit, onTriggerExit);
            DrawEvents(eventStay, onTriggerStay);

            void DrawEvents(UnityEvent ev, bool active)
            {
                for (int i = 0; i < ev.GetPersistentEventCount(); i++)
                {
                    var component = ev.GetPersistentTarget(i) as Component;
                    if (component != null)
                    {
                        Transform t = component.transform;

                        if (t.GetComponent <MeshRenderer>())
                        {
                            var   mr     = t.GetComponent <MeshRenderer>();
                            Color orgCol = Gizmos.color;

                            /*if (!active)
                             *  Gizmos.color = Gizmos.color * .5f;*/
                            Gizmos.DrawWireCube(mr.bounds.center, mr.bounds.size + Vector3.one * .1f);
                            AdditionalGizmos.DrawArc(transform.position, mr.bounds.center);
                            Gizmos.color = orgCol;
                        }
                        else
                        {
                            Color orgCol = Gizmos.color;

                            /*if (!active)
                             *  Gizmos.color = Gizmos.color * .5f;*/
                            Gizmos.DrawWireCube(t.position, Vector3.one);
                            //Gizmos.DrawLine(transform.position, t.position);
                            AdditionalGizmos.DrawArc(transform.position, t.position);
                            Gizmos.color = orgCol;
                        }
                    }
                }
            }

            foreach (var col in GetComponents <Collider>())
            {
                if (!col.isTrigger || !col.enabled)
                {
                    continue;
                }
                if (col.GetType() == typeof(BoxCollider))
                {
                    var m = Gizmos.matrix;
                    Gizmos.matrix = transform.localToWorldMatrix;

                    BoxCollider bc = col as BoxCollider;
                    Gizmos.DrawCube(bc.center, bc.size);

                    Gizmos.matrix = m;
                }
                else if (col.GetType() == typeof(SphereCollider))
                {
                    SphereCollider sc       = col as SphereCollider;
                    Vector3        s        = transform.localScale;
                    float          maxScale = Mathf.Max(s.x, s.y, s.z);
                    Gizmos.DrawSphere(transform.TransformPoint(sc.center), sc.radius * maxScale);
                }
                else if (col.GetType() == typeof(MeshCollider))
                {
                    var m = Gizmos.matrix;
                    Gizmos.matrix = transform.localToWorldMatrix;

                    MeshCollider mc = col as MeshCollider;
                    Gizmos.DrawMesh(mc.sharedMesh);

                    Gizmos.matrix = m;
                }
            }
        }
Пример #3
0
 private void OnDrawGizmos()
 {
     AdditionalGizmos.DrawArrow(transform.position, transform.forward);
 }