Example #1
0
        public static void CheckForModifiedProperty <T>(SerializedProperty property, T targetObject, bool forceHasChanged = false)
        {
            MapboxDataProperty targetObjectAsDataProperty = GetMapboxDataPropertyObject(targetObject);

            if (targetObjectAsDataProperty != null)
            {
                targetObjectAsDataProperty.HasChanged = forceHasChanged || property.serializedObject.ApplyModifiedProperties();
            }
        }
        public static void CheckForModifiedProperty <T>(SerializedProperty property, T targetObject)
        {
            MapboxDataProperty targetObjectAsDataProperty = targetObject as MapboxDataProperty;

            if (property.serializedObject.ApplyModifiedProperties() && targetObjectAsDataProperty != null)
            {
                targetObjectAsDataProperty.HasChanged = true;
            }
        }
        /// <summary>
        /// Adds the new instance to array.
        /// </summary>
        /// <param name="obj">Object.</param>
        public void AddNewInstanceToArray(object obj)
        {
            ScriptableObject asset = obj as ScriptableObject;

            _finalize.arraySize++;
            _finalize.GetArrayElementAtIndex(_finalize.arraySize - 1).objectReferenceValue = asset;

            MapboxDataProperty mapboxDataProperty = (MapboxDataProperty)EditorHelper.GetTargetObjectWithProperty(_finalize);

            if (_finalize.serializedObject.ApplyModifiedProperties() && mapboxDataProperty != null)
            {
                mapboxDataProperty.HasChanged = true;
            }
        }
        void OnGUI()
        {
            if (_assets == null || _assets.Count == 0)
            {
                var list = AssetDatabase.FindAssets("t:" + _type.Name);
                _assets = new List <ScriptableObject>();
                foreach (var item in list)
                {
                    var ne    = AssetDatabase.GUIDToAssetPath(item);
                    var asset = AssetDatabase.LoadAssetAtPath(ne, _type) as ScriptableObject;
                    _assets.Add(asset);
                }
                _assets = _assets.OrderBy(x => x.GetType().Name).ThenBy(x => x.name).ToList();
            }

            var st = new GUIStyle();

            st.padding = new RectOffset(15, 15, 15, 15);
            scrollPos  = EditorGUILayout.BeginScrollView(scrollPos, st);
            for (int i = 0; i < _assets.Count; i++)
            {
                var asset = _assets[i];
                if (asset == null)                 //yea turns out this can happen
                {
                    continue;
                }
                GUILayout.BeginHorizontal();

                var b = Header(string.Format("{0,-40} - {1, -15}", asset.GetType().Name, asset.name), i == activeIndex);

                if (b)
                {
                    activeIndex = i;
                }
                if (GUILayout.Button(new GUIContent("Select"), header, GUILayout.Width(80)))
                {
                    if (_act != null)
                    {
                        _act(asset);
                    }
                    else
                    {
                        if (_index == -1)
                        {
                            _finalize.arraySize++;
                            _finalize.GetArrayElementAtIndex(_finalize.arraySize - 1).objectReferenceValue = asset;
                            _finalize.serializedObject.ApplyModifiedProperties();
                        }
                        else
                        {
                            _finalize.GetArrayElementAtIndex(_index).objectReferenceValue = asset;
                            _finalize.serializedObject.ApplyModifiedProperties();
                        }
                    }

                    MapboxDataProperty mapboxDataProperty = (MapboxDataProperty)EditorHelper.GetTargetObjectOfProperty(_container);
                    if (mapboxDataProperty != null)
                    {
                        mapboxDataProperty.HasChanged = true;
                    }

                    this.Close();
                }

                GUILayout.EndHorizontal();
                if (b)
                {
                    EditorGUILayout.Space();
                    EditorGUI.indentLevel += 4;
                    GUI.enabled            = false;
                    var ed = UnityEditor.Editor.CreateEditor(asset);
                    ed.hideFlags = HideFlags.NotEditable;
                    ed.OnInspectorGUI();
                    GUI.enabled            = true;
                    EditorGUI.indentLevel -= 4;
                    EditorGUILayout.Space();
                }
                EditorGUILayout.Space();
            }
            EditorGUILayout.EndScrollView();
        }
Example #5
0
        public static bool DidModifyProperty <T>(SerializedProperty property, T targetObject)
        {
            MapboxDataProperty targetObjectAsDataProperty = targetObject as MapboxDataProperty;

            return(property.serializedObject.ApplyModifiedProperties() && targetObjectAsDataProperty != null);
        }