private static bool IsValidTargetForRequiredComponent(SerializedProperty targetSerializedProperty, SerializedProperty actionSerializedProperty) { if (targetSerializedProperty.objectReferenceValue == null) { return(false); } Type type = actionSerializedProperty.GetTypeFromManagedFullTypeName(); return(DOTweenActionEditorGUIUtility.CanActionBeAppliedToTarget(type, targetSerializedProperty.objectReferenceValue as GameObject)); }
protected override AdvancedDropdownItem BuildRoot() { AdvancedDropdownItem root = new AdvancedDropdownItem("DOTween Actions"); foreach (var typeToDisplayGUI in DOTweenActionEditorGUIUtility.TypeToDisplayName) { Type baseDOTweenActionType = typeToDisplayGUI.Key; AdvancedDropdownItem targetFolder = root; if (DOTweenActionEditorGUIUtility.TypeToParentDisplay.TryGetValue(baseDOTweenActionType, out GUIContent parent)) { AdvancedDropdownItem item = targetFolder.children.FirstOrDefault(dropdownItem => dropdownItem.name.Equals(parent.text, StringComparison.Ordinal)); if (item == null) { item = new AdvancedDropdownItem(parent.text) { icon = (Texture2D)parent.image }; targetFolder.AddChild(item); } targetFolder = item; } DOTweenActionAdvancedDropdownItem doTweenActionAdvancedDropdownItem = new DOTweenActionAdvancedDropdownItem(baseDOTweenActionType, typeToDisplayGUI.Value.text) { enabled = !IsTypeAlreadyInUse(actionsList, baseDOTweenActionType) && DOTweenActionEditorGUIUtility.CanActionBeAppliedToTarget(baseDOTweenActionType, targetGameObject) }; if (typeToDisplayGUI.Value.image != null) { doTweenActionAdvancedDropdownItem.icon = (Texture2D)typeToDisplayGUI.Value.image; } targetFolder.AddChild(doTweenActionAdvancedDropdownItem); } return(root); }