Esempio n. 1
0
    public override void OnInspectorGUI()
    {
        Styles();

        serializedObject.Update();

        var intensity    = serializedObject.FindProperty("_intensities");
        var range        = serializedObject.FindProperty("_range");
        var width        = serializedObject.FindProperty("_width");
        var lenght       = serializedObject.FindProperty("_lenght");
        var ground       = serializedObject.FindProperty("_groundHeigh");
        var distancePow  = serializedObject.FindProperty("_distancePow");
        var distanceLerp = serializedObject.FindProperty("_distanceLerper");
        var center       = serializedObject.FindProperty("_center");

        EditorGUILayout.BeginHorizontal();

        int typeIndex = serializedObject.FindProperty("type").enumValueIndex;

        if (GUILayout.Button("<", arrowStyle, GUILayout.Height(50)))
        {
            GravityField.SwitchType(ref typeIndex, -1);
        }

        EditorGUILayout.LabelField(GravityField.TypeString((GravityField.Type)typeIndex) + " Field", titleStyle, GUILayout.Height(titleHeight));

        if (GUILayout.Button(">", arrowStyle, GUILayout.Height(50)))
        {
            GravityField.SwitchType(ref typeIndex, 1);
        }

        serializedObject.FindProperty("type").enumValueIndex = typeIndex;

        EditorGUILayout.EndHorizontal();

        intensity.vector2Value  = EditorGUILayout.Vector2Field("Intensity : ", intensity.vector2Value);
        distancePow.floatValue  = EditorGUILayout.FloatField("Distance Pow : ", distancePow.floatValue);
        distanceLerp.floatValue = EditorGUILayout.FloatField("Distance Lerp Pow : ", distanceLerp.floatValue);

        center.vector3Value = EditorGUILayout.Vector3Field("Center : ", center.vector3Value);

        switch ((GravityField.Type)typeIndex)
        {
        default: break;

        case GravityField.Type.TwoSided: goto case GravityField.Type.Flat;

        case GravityField.Type.Flat:
            Vector3 size = new Vector3(width.floatValue, range.floatValue, lenght.floatValue);
            size             = EditorGUILayout.Vector3Field("Size : ", size);
            width.floatValue = size.x; range.floatValue = size.y; lenght.floatValue = size.z;
            break;

        case GravityField.Type.Spherical:
            range.floatValue  = EditorGUILayout.FloatField("Radius : ", range.floatValue);
            ground.floatValue = EditorGUILayout.FloatField("Ground Radius : ", ground.floatValue);
            break;
        }

        serializedObject.ApplyModifiedProperties();
    }