private static void DrawGizmos(ObiRopeCursor cursor, GizmoType gizmoType)
        {
            var rope = cursor.GetComponent <ObiRope>();

            if (rope.solver != null)
            {
                Gizmos.color = new Color(1, 0.5f, 0, 0.75f);

                // draw source particle:
                int sourceIndex = cursor.sourceParticleIndex;

                if (sourceIndex >= 0 && rope.IsParticleActive(rope.solver.particleToActor[sourceIndex].indexInActor))
                {
                    Vector3 pos = rope.GetParticlePosition(sourceIndex);
                    Gizmos.DrawWireSphere(pos, HandleUtility.GetHandleSize(pos) * 0.4f);
                }

                // draw cursor:
                var element = cursor.cursorElement;

                if (element != null && element.particle1 != element.particle2)
                {
                    Vector3 pos       = rope.GetParticlePosition(cursor.direction ? element.particle1 : element.particle2);
                    Vector3 pos2      = rope.GetParticlePosition(cursor.direction ? element.particle2 : element.particle1);
                    Vector3 direction = pos2 - pos;

                    float size = HandleUtility.GetHandleSize(pos) * 0.4f;
                    Gizmos.matrix = Matrix4x4.TRS(pos, Quaternion.LookRotation(direction), Vector3.one * size);
                    DrawArrow();
                }
            }
        }
示例#2
0
 public void OnEnable()
 {
     cursor = (ObiRopeCursor)target;
 }
示例#3
0
 public void Awake()
 {
     cursor = GetComponent <ObiRopeCursor>();
     rope   = GetComponent <ObiRope>();
 }