| 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<bool>(QSetting.ShowBreakedPrefabsOnly); | 
|             enabled = QSettings.getInstance().get<bool>(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); | 
|                 } | 
|             } | 
|         } | 
|     } | 
| } |