using System; using System.Collections.Generic; using UnityEngine; using UnityEditor; using qtools.qhierarchy.pcomponent.pbase; using qtools.qhierarchy.pdata; namespace qtools.qhierarchy.pcomponent { public class QPrefabComponent: QBaseComponent { // PRIVATE private Texture2D prefabConnectedTexture; private Texture2D prefabDisconnectedTexture; private Color backgroundColor; private bool showPrefabConnectedIcon; // CONSTRUCTOR public QPrefabComponent() { prefabConnectedTexture = QResources.getInstance().getTexture(QTexture.QPrefabConnectedIcon); prefabDisconnectedTexture = QResources.getInstance().getTexture(QTexture.QPrefabDisconnectedIcon); backgroundColor = QResources.getInstance().getColor(QColor.Background); QSettings.getInstance().addEventListener(QSetting.ShowBreakedPrefabsOnly , settingsChanged); QSettings.getInstance().addEventListener(QSetting.ShowPrefabComponent , settingsChanged); settingsChanged(); } // PRIVATE private void settingsChanged() { showPrefabConnectedIcon = QSettings.getInstance().get(QSetting.ShowBreakedPrefabsOnly); enabled = QSettings.getInstance().get(QSetting.ShowPrefabComponent); } // DRAW public override void layout(GameObject gameObject, QObjectList objectList, ref Rect rect) { rect.x -= 9; rect.width = 9; } public override void draw(GameObject gameObject, QObjectList objectList, Rect selectionRect, Rect curRect) { PrefabType prefabType = PrefabUtility.GetPrefabType(gameObject); if (prefabType == PrefabType.MissingPrefabInstance || prefabType == PrefabType.DisconnectedPrefabInstance || prefabType == PrefabType.DisconnectedModelPrefabInstance) { GUI.DrawTexture(curRect, prefabDisconnectedTexture); } else { if (!showPrefabConnectedIcon && prefabType != PrefabType.None) { GUI.DrawTexture(curRect, prefabConnectedTexture); } else { EditorGUI.DrawRect(curRect, backgroundColor); } } } } }