示例#1
0
        public static void FindGameObjectWithComponentsReferences()
        {
            if (Time.unscaledTime.Equals(lastMenuCallTimestamp))
            {
                return;
            }
            if (Selection.gameObjects.Length == 0)
            {
                return;
            }

            ReferencesFinder.FindObjectsReferencesInHierarchy(Selection.gameObjects, true);

            lastMenuCallTimestamp = Time.unscaledTime;
        }
示例#2
0
        protected override DragAndDropVisualMode HandleDragAndDrop(DragAndDropArgs args)
        {
            var objectReferences = DragAndDrop.objectReferences;

            if (objectReferences == null || objectReferences.Length == 0)
            {
                return(DragAndDropVisualMode.Rejected);
            }

            var prefabStage = PrefabStageUtility.GetCurrentPrefabStage();
            var validItems  = new List <Object>(objectReferences.Length);

            foreach (var reference in objectReferences)
            {
                // reject any objects from assets
                if (AssetDatabase.Contains(reference))
                {
                    continue;
                }

                var validObject = false;
                var component   = reference as Component;
                var gameObject  = reference as GameObject;
                if (component != null)
                {
                    gameObject = component.gameObject;
                }
                else if (gameObject == null)
                {
                    continue;
                }

                if (gameObject != null)
                {
                    if (prefabStage != null && PrefabStageUtility.GetPrefabStage(gameObject) == prefabStage)
                    {
                        validObject = true;
                    }
                    else if (gameObject.scene.IsValid())
                    {
                        validObject = true;
                    }
                }

                if (validObject)
                {
                    validItems.Add(reference);
                }
            }

            if (validItems.Count == 0)
            {
                return(DragAndDropVisualMode.Rejected);
            }

            if (Event.current.type == EventType.DragPerform)
            {
                var alt = Event.current.alt;

                EditorApplication.delayCall += () =>
                {
                    ReferencesFinder.FindObjectsReferencesInHierarchy(validItems.ToArray(), !alt);
                };
                DragAndDrop.AcceptDrag();
            }

            return(DragAndDropVisualMode.Generic);
        }