예제 #1
0
    // ------------------------------------------------------------------
    // Desc:
    // ------------------------------------------------------------------

    protected bool EventField(exUIControl.EventTrigger _eventTrigger)
    {
        bool deleted = false;

        GUILayout.BeginHorizontal();
        GUILayout.Space(4f);

        GUILayout.BeginVertical();
        EditorGUILayout.BeginHorizontal();
        // name
        GUILayout.Toggle(true, _eventTrigger.name, "dragtab");

        // delete
        if (GUILayout.Button(styles.iconToolbarMinus,
                             "InvisibleButton",
                             GUILayout.Width(styles.iconToolbarMinus.width),
                             GUILayout.Height(styles.iconToolbarMinus.height)))
        {
            deleted = true;
        }
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginHorizontal("AS TextArea", GUILayout.MinHeight(10f));
        GUILayout.BeginVertical();

        // slots
        for (int i = 0; i < _eventTrigger.slots.Count; ++i)
        {
            exUIControl.SlotInfo slotInfo = SlotField(_eventTrigger.slots[i]);
            if (slotInfo == null)
            {
                _eventTrigger.slots.RemoveAt(i);
                --i;
                EditorUtility.SetDirty(target);
            }
        }

        // new slot
        EditorGUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        GameObject receiver = EditorGUILayout.ObjectField(null, typeof(GameObject), true, GUILayout.Width(150)) as GameObject;

        if (receiver != null)
        {
            exUIControl.SlotInfo slotInfo = new exUIControl.SlotInfo();
            slotInfo.receiver = receiver;
            _eventTrigger.slots.Add(slotInfo);
            EditorUtility.SetDirty(target);
        }
        GUILayout.Label(styles.iconToolbarPlus, GUILayout.Width(20));
        EditorGUILayout.EndHorizontal();

        GUILayout.EndVertical();
        EditorGUILayout.EndHorizontal();

        GUILayout.EndVertical();

        GUILayout.Space(4f);
        GUILayout.EndHorizontal();

        return(deleted);
    }
예제 #2
0
    // ------------------------------------------------------------------
    // Desc:
    // ------------------------------------------------------------------

    protected override void DoInspectorGUI()
    {
        base.DoInspectorGUI();

        // if settingsStyles is null
        if (styles == null)
        {
            styles = new Styles();
        }

        //
        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button("Sync Size", GUILayout.Width(70), GUILayout.Height(20)))
        {
            exPlane targetPlane = target as exPlane;
            if (targetPlane.hasSprite)
            {
                exSpriteBase spriteBase = targetPlane.GetComponent <exSpriteBase>();
                if (targetPlane.width != spriteBase.width)
                {
                    targetPlane.width = spriteBase.width;
                    EditorUtility.SetDirty(targetPlane);
                }

                if (targetPlane.height != spriteBase.height)
                {
                    targetPlane.height = spriteBase.height;
                    EditorUtility.SetDirty(targetPlane);
                }

                if (targetPlane.anchor != spriteBase.anchor)
                {
                    targetPlane.anchor = spriteBase.anchor;
                    EditorUtility.SetDirty(targetPlane);
                }

                if (targetPlane.offset != spriteBase.offset)
                {
                    targetPlane.offset = spriteBase.offset;
                    EditorUtility.SetDirty(targetPlane);
                }
            }
        }
        GUILayout.EndHorizontal();

        //
        EditorGUILayout.Space();
        EditorGUILayout.PropertyField(priorityProp);

        // active
        EditorGUI.BeginChangeCheck();
        EditorGUILayout.PropertyField(activeProp, new GUIContent("Active"));
        if (EditorGUI.EndChangeCheck())
        {
            foreach (Object obj in serializedObject.targetObjects)
            {
                exUIControl ctrl = obj as exUIControl;
                if (ctrl)
                {
                    ctrl.activeSelf = activeProp.boolValue;
                    EditorUtility.SetDirty(ctrl);
                }
            }
        }

        // grabMouseOrTouch
        EditorGUILayout.PropertyField(grabMouseOrTouchProp, new GUIContent("Grab Mouse Or Touch"));

        // use collider
        EditorGUI.BeginChangeCheck();
        EditorGUILayout.PropertyField(useColliderProp, new GUIContent("Use Collider"));
        if (EditorGUI.EndChangeCheck())
        {
            if (useColliderProp.boolValue)
            {
                foreach (Object obj in serializedObject.targetObjects)
                {
                    exUIControl ctrl = obj as exUIControl;
                    if (ctrl)
                    {
                        Collider collider = ctrl.GetComponent <Collider>();
                        if (collider == null)
                        {
                            collider = ctrl.gameObject.AddComponent <BoxCollider>();
                        }

                        BoxCollider boxCollider = collider as BoxCollider;
                        if (boxCollider != null)
                        {
                            Rect localRect = ctrl.GetLocalAABoundingRect();
                            boxCollider.center = new Vector3(localRect.center.x, localRect.center.y, boxCollider.center.z);
                            boxCollider.size   = new Vector3(localRect.width, localRect.height, boxCollider.size.z);
                        }
                    }
                }
            }
            else
            {
                foreach (Object obj in serializedObject.targetObjects)
                {
                    exUIControl ctrl = obj as exUIControl;
                    if (ctrl)
                    {
                        Collider[] colliders = ctrl.GetComponents <Collider>();
                        for (int i = 0; i < colliders.Length; ++i)
                        {
                            Object.DestroyImmediate(colliders[i]);
                        }
                    }
                }
            }
        }

        if (useColliderProp.boolValue)
        {
            EditorGUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("Sync Collider", GUILayout.MinWidth(50), GUILayout.Height(20)))
            {
                foreach (Object obj in serializedObject.targetObjects)
                {
                    exUIControl ctrl = obj as exUIControl;
                    if (ctrl)
                    {
                        BoxCollider boxCollider = ctrl.GetComponent <BoxCollider>();
                        Rect        localRect   = ctrl.GetLocalAABoundingRect();
                        boxCollider.center = new Vector3(localRect.center.x, localRect.center.y, boxCollider.center.z);
                        boxCollider.size   = new Vector3(localRect.width, localRect.height, boxCollider.size.z);
                    }
                }
            }
            EditorGUILayout.EndHorizontal();
        }

        if (serializedObject.isEditingMultipleObjects == false)
        {
            exUIControl uiControl = target as exUIControl;

            // event adding selector
            List <string> eventDefNameList = new List <string>();
            eventDefNameList.Add("Event List");
            eventDefNameList.AddRange(uiControl.GetEventNames());

            foreach (exUIControl.EventTrigger eventTrigger in uiControl.events)
            {
                int idx = eventDefNameList.IndexOf(eventTrigger.name);
                if (idx != -1)
                {
                    eventDefNameList.RemoveAt(idx);
                }
            }

            int choice = EditorGUILayout.Popup("Add Event", 0, eventDefNameList.ToArray());
            if (choice != 0)
            {
                exUIControl.EventTrigger newTrigger = new exUIControl.EventTrigger(eventDefNameList[choice]);
                uiControl.events.Add(newTrigger);
                EditorUtility.SetDirty(target);
            }

            // event triggers
            for (int i = 0; i < uiControl.events.Count; ++i)
            {
                EditorGUILayout.Space();

                exUIControl.EventTrigger eventTrigger = uiControl.events[i];
                if (EventField(eventTrigger))
                {
                    uiControl.events.RemoveAt(i);
                    --i;
                    EditorUtility.SetDirty(target);
                }

                EditorGUILayout.Space();
            }
        }

        EditorGUILayout.Space();
    }
예제 #3
0
    // ------------------------------------------------------------------
    // Desc:
    // ------------------------------------------------------------------
    protected override void DoInspectorGUI()
    {
        base.DoInspectorGUI();

        // if settingsStyles is null
        if ( styles == null ) {
            styles = new Styles();
        }

        //
        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if ( GUILayout.Button("Sync Size", GUILayout.Width(70), GUILayout.Height(20) ) ) {
            exPlane targetPlane = target as exPlane;
            if ( targetPlane.hasSprite ) {
                exSpriteBase spriteBase = targetPlane.GetComponent<exSpriteBase>();
                if ( targetPlane.width != spriteBase.width ) {
                    targetPlane.width = spriteBase.width;
                    EditorUtility.SetDirty(targetPlane);
                }

                if ( targetPlane.height != spriteBase.height ) {
                    targetPlane.height = spriteBase.height;
                    EditorUtility.SetDirty(targetPlane);
                }

                if ( targetPlane.anchor != spriteBase.anchor ) {
                    targetPlane.anchor = spriteBase.anchor;
                    EditorUtility.SetDirty(targetPlane);
                }

                if ( targetPlane.offset != spriteBase.offset ) {
                    targetPlane.offset = spriteBase.offset;
                    EditorUtility.SetDirty(targetPlane);
                }
            }
        }
        GUILayout.EndHorizontal();

        //
        EditorGUILayout.Space();
        EditorGUILayout.PropertyField ( priorityProp );

        // active
        EditorGUI.BeginChangeCheck();
        EditorGUILayout.PropertyField ( activeProp, new GUIContent("Active") );
        if ( EditorGUI.EndChangeCheck() ) {
            foreach ( Object obj in serializedObject.targetObjects ) {
                exUIControl ctrl = obj as exUIControl;
                if ( ctrl ) {
                    ctrl.activeSelf = activeProp.boolValue;
                    EditorUtility.SetDirty(ctrl);
                }
            }
        }

        // grabMouseOrTouch
        EditorGUILayout.PropertyField ( grabMouseOrTouchProp, new GUIContent("Grab Mouse Or Touch") );

        // use collider
        EditorGUI.BeginChangeCheck();
        EditorGUILayout.PropertyField ( useColliderProp, new GUIContent("Use Collider") );
        if ( EditorGUI.EndChangeCheck() ) {
            if ( useColliderProp.boolValue ) {
                foreach ( Object obj in serializedObject.targetObjects ) {
                    exUIControl ctrl = obj as exUIControl;
                    if ( ctrl ) {
                        Collider collider = ctrl.GetComponent<Collider>();
                        if ( collider == null ) {
                            collider = ctrl.gameObject.AddComponent<BoxCollider>();
                        }

                        BoxCollider boxCollider = collider as BoxCollider;
                        if ( boxCollider != null ) {
                            Rect localRect = ctrl.GetLocalAABoundingRect();
                            boxCollider.center = new Vector3( localRect.center.x, localRect.center.y, boxCollider.center.z);
                            boxCollider.size = new Vector3 ( localRect.width, localRect.height, boxCollider.size.z );
                        }
                    }
                }
            }
            else {
                foreach ( Object obj in serializedObject.targetObjects ) {
                    exUIControl ctrl = obj as exUIControl;
                    if ( ctrl ) {
                        Collider[] colliders = ctrl.GetComponents<Collider>();
                        for ( int i = 0; i < colliders.Length; ++i ) {
                            Object.DestroyImmediate(colliders[i]);
                        }
                    }
                }
            }
        }

        if ( useColliderProp.boolValue ) {
            EditorGUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
                if ( GUILayout.Button("Sync Collider", GUILayout.MinWidth(50), GUILayout.Height(20) ) ) {
                    foreach ( Object obj in serializedObject.targetObjects ) {
                        exUIControl ctrl = obj as exUIControl;
                        if ( ctrl ) {
                            BoxCollider boxCollider = ctrl.GetComponent<BoxCollider>();
                            Rect localRect = ctrl.GetLocalAABoundingRect();
                            boxCollider.center = new Vector3( localRect.center.x, localRect.center.y, boxCollider.center.z);
                            boxCollider.size = new Vector3 ( localRect.width, localRect.height, boxCollider.size.z );
                        }
                    }
                }
            EditorGUILayout.EndHorizontal();
        }

        if ( serializedObject.isEditingMultipleObjects == false ) {
            exUIControl uiControl = target as exUIControl;

            // event adding selector
            List<string> eventDefNameList = new List<string>();
            eventDefNameList.Add( "Event List" );
            eventDefNameList.AddRange( uiControl.GetEventNames() );

            foreach ( exUIControl.EventTrigger eventTrigger in uiControl.events ) {
                int idx = eventDefNameList.IndexOf(eventTrigger.name);
                if ( idx != -1 ) {
                    eventDefNameList.RemoveAt(idx);
                }
            }

            int choice = EditorGUILayout.Popup ( "Add Event", 0, eventDefNameList.ToArray() );
            if ( choice != 0 ) {
                exUIControl.EventTrigger newTrigger = new exUIControl.EventTrigger ( eventDefNameList[choice] );
                uiControl.events.Add(newTrigger);
                EditorUtility.SetDirty(target);
            }

            // event triggers
            for ( int i = 0; i < uiControl.events.Count; ++i ) {
                EditorGUILayout.Space();

                exUIControl.EventTrigger eventTrigger = uiControl.events[i];
                if ( EventField ( eventTrigger ) ) {
                    uiControl.events.RemoveAt(i);
                    --i;
                    EditorUtility.SetDirty(target);
                }

                EditorGUILayout.Space();
            }
        }

        EditorGUILayout.Space();
    }