示例#1
0
    static void DrawGameObjectName(ItemReference itemReference, GizmoType gizmoType)
    {
        // Dont show gizmos over item references that live in an inactive layout
        if (itemReference.transform.parent)
        {
            ItemLayout layout = itemReference.transform.parent.GetComponent <ItemLayout>();

            if (layout && !layout.visualize)
            {
                return;
            }
        }

        if (!backgroundTexture)
        {
            backgroundTexture = new Texture2D(1, 1);
            backgroundTexture.SetPixel(0, 0, new Color(0f, 0f, 0f, .75f));
            backgroundTexture.Apply();
        }

        GUIStyle labelStyle = new GUIStyle();

        labelStyle.fontSize          = 14;
        labelStyle.fontStyle         = FontStyle.Bold;
        labelStyle.normal.textColor  = itemReference.GetStatusColor();
        labelStyle.normal.background = backgroundTexture;

        Handles.Label(itemReference.transform.position, "Ref" + itemReference.NiceName(), labelStyle);

        // TODO: edit the bounds gizmo
//        Handles.CubeCap(0, itemReference.transform.position, Quaternion.identity, 1f);
//        Handles.RectangleCap(0, itemReference.transform.position, Quaternion.identity, 1f);
    }
示例#2
0
    public override void OnInspectorGUI()
    {
        ItemReference item = (ItemReference)target;

        if (!item)
        {
            return;
        }

        Undo.RecordObject(item, "Modify item reference");

        // Load item type at least, to simplify search :)
        if (firstTime)
        {
            //Item instance = GetItemById(item.itemId);
            //typeFilter = instance ? instance.type : ItemType.Decoration;
            firstTime = false;
        }

        EditorGUIUtility.labelWidth = 75f;

        GUIStyle titleStyle = new GUIStyle();

        titleStyle.fontSize         = 20;
        titleStyle.fontStyle        = FontStyle.Bold;
        titleStyle.normal.textColor = item.GetStatusColor();

        EditorGUILayout.LabelField(item.NiceName(), titleStyle);

        EditorGUILayout.Space();
        EditorGUILayout.Space();

        ItemReferenceData(item);
        EditorGUILayout.Space();

        if (!item.procedural)
        {
            ItemShowPreview();
        }
        EditorGUILayout.Space();

        GUILayout.BeginVertical();

        if (EditorApplication.isPlaying)
        {
            EditorGUILayout.LabelField("Cannot edit in play mode.");
        }
        else
        {
            if (!item.procedural)
            {
                ItemSelectGUI(item);
            }
        }

        GUILayout.EndVertical();

        if (GUI.changed)
        {
            EditorUtility.SetDirty(item);
        }
    }