Exemple #1
0
        /// <summary>
        /// Current height of this property.
        /// </summary>
        /// <param name="property"></param>
        /// <param name="label"></param>
        /// <returns></returns>
        public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
        {
            float h = EditorGUIUtility.singleLineHeight; // Label

            if (property.isExpanded)
            {
                h += 2 * EditorGUIUtility.singleLineHeight; // Datum id & Internal data type
                SerializedProperty internalType = property.FindPropertyRelative("internalDataType");
                if (internalDataType != null)
                {
                    SerializedProperty internalData = property.FindPropertyRelative("data");
                    if (internalData != null)
                    {
                        VariableDatum.DatumDataType dataType = (VariableDatum.DatumDataType)internalType.intValue;
                        switch (dataType)
                        {
                        case VariableDatum.DatumDataType.Doubles:
                        case VariableDatum.DatumDataType.Longs:
                        case VariableDatum.DatumDataType.ULongs:
                            h += ((internalData.arraySize / 8) + 1) * EditorGUIUtility.singleLineHeight;
                            break;

                        case VariableDatum.DatumDataType.String:
                            h += EditorGUIUtility.singleLineHeight;
                            for (int i = 0; i < internalData.arraySize; ++i)
                            {
                                if (internalData.GetArrayElementAtIndex(i).intValue == '\n')
                                {
                                    h += EditorGUIUtility.singleLineHeight;
                                }
                            }
                            break;
                        }
                    }
                }
            }

            return(h);
        }
Exemple #2
0
        /// <summary>
        /// Draw property
        /// </summary>
        /// <param name="position"></param>
        /// <param name="property"></param>
        /// <param name="label"></param>
        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
        {
            Init(property);

            EditorGUI.BeginProperty(position, label, property);
            position.height = EditorGUIUtility.singleLineHeight;

            // Label
            property.isExpanded = EditorGUI.Foldout(position, property.isExpanded, ObjectNames.NicifyVariableName((( DatumID )datumID.intValue).ToString()));
            position.y         += EditorGUIUtility.singleLineHeight;

            if (property.isExpanded)
            {
                EditorGUI.indentLevel++;

                datumID.intValue = ( int )( DatumID )EditorGUI.EnumPopup(position, "Datum ID", ( DatumID )datumID.intValue);
                position.y      += EditorGUIUtility.singleLineHeight;

                VariableDatum.DatumDataType dataType = (VariableDatum.DatumDataType)EditorGUI.EnumPopup(position, internalDataTypeLabel, (VariableDatum.DatumDataType)internalDataType.intValue);
                internalDataType.intValue = ( int )dataType;
                position.y += EditorGUIUtility.singleLineHeight;

                switch (dataType)
                {
                case VariableDatum.DatumDataType.Doubles: DrawDoublesField(position); break;

                case VariableDatum.DatumDataType.Longs: DrawLongsField(position); break;

                case VariableDatum.DatumDataType.ULongs: DrawULongsField(position); break;

                case VariableDatum.DatumDataType.String: DrawStringField(position); break;
                }
                EditorGUI.indentLevel--;
            }
            EditorGUI.EndProperty();
        }