public static void FindGameObjectWithComponentsReferences() { if (Time.unscaledTime.Equals(lastMenuCallTimestamp)) { return; } if (Selection.gameObjects.Length == 0) { return; } ReferencesFinder.FindObjectsReferencesInHierarchy(Selection.gameObjects, true); lastMenuCallTimestamp = Time.unscaledTime; }
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); }