예제 #1
0
    void HideNoCommunication()
    {
        isHiding = true;


        UpdateAllObject();
        UpdateList();
        foreach (var obj in allObject)
        {
            obj.hideFlags = HideFlags.HideInHierarchy;
        }

        foreach (var item in refObjectList)
        {
            ParentShow(item.rootComponent.transform);
            if (item.value == null)
            {
                continue;
            }

            var obj = SceneObjectUtility.GetGameObject(item.value);

            if (obj != null)
            {
                ParentShow(obj.transform);
            }
        }
    }
    void OnSceneGUI(SceneView sceneView)
    {
        var selection = Selection.activeGameObject as GameObject;

        if (selection == null)
        {
            return;
        }


        var cameraTransform = SceneView.currentDrawingSceneView.camera.transform;
        var rotate          = cameraTransform.rotation;
        var cameraPos       = cameraTransform.position;

        Color shadowCol = new Color(0.5f, 0, 0, 0.06f);

        foreach (var target in referenceObjectList)
        {
            var obj = SceneObjectUtility.GetGameObject(target.value);
            if (obj == null)
            {
                continue;
            }
            if (obj == Selection.activeGameObject)
            {
                continue;
            }


            var startPosition = selection.transform.position;
            var endPosition   = obj.transform.position;

            var size = Vector3.Distance(endPosition, cameraPos) * 0.02f;

            if (startPosition == endPosition)
            {
                continue;
            }

            Handles.color = Color.red;

            var diffPos = startPosition - endPosition;
            var tan     = new Vector3(diffPos.y, diffPos.x, diffPos.z);


            var startTan = startPosition;
            var endTan   = endPosition + tan * 0.4f;

            Handles.CircleCap(1, endPosition, rotate, size);

            for (int i = 0; i < 3; i++)
            {
                Handles.DrawBezier(startPosition, endPosition, startTan, endTan, shadowCol, null, (i + 1) * 5);
            }
            Handles.DrawBezier(startPosition, endPosition, startTan, endTan, Color.red, null, 1);

            Handles.Label(endPosition, obj.name);
        }
    }