public override void OnInspectorGUI()

in Assets/MRTK/Core/Inspectors/Utilities/Lines/DataProviders/BaseLineDataProviderInspector.cs [119:272]


        public override void OnInspectorGUI()
        {
            serializedObject.Update();

            editorSettingsFoldout = EditorGUILayout.Foldout(editorSettingsFoldout, EditorSettingsContent, true);
            SessionState.SetBool(EditorSettingsFoldoutKey, editorSettingsFoldout);

            if (editorSettingsFoldout)
            {
                using (new EditorGUI.IndentLevelScope())
                {
                    EditorGUI.BeginChangeCheck();

                    using (new EditorGUI.DisabledGroupScope(!RenderLinePreview))
                    {
                        EditorGUI.BeginChangeCheck();

                        LinePreviewResolution = EditorGUILayout.IntSlider("Preview Resolution", LinePreviewResolution, 2, 128);

                        if (EditorGUI.EndChangeCheck())
                        {
                            SessionState.SetInt(LinePreviewResolutionKey, LinePreviewResolution);
                        }

                        EditorGUI.BeginChangeCheck();
                        DrawLinePoints = EditorGUILayout.Toggle("Draw Line Points", DrawLinePoints);

                        if (EditorGUI.EndChangeCheck())
                        {
                            SessionState.SetBool(DrawLinePointsKey, DrawLinePoints);
                        }

                    }

                    EditorGUI.BeginChangeCheck();
                    DrawLineRotations = EditorGUILayout.Toggle("Draw Line Rotations", DrawLineRotations);

                    if (EditorGUI.EndChangeCheck())
                    {
                        SessionState.SetBool(DrawLineRotationsKey, DrawLineRotations);
                    }

                    if (DrawLineRotations)
                    {
                        EditorGUI.BeginChangeCheck();
                        RotationArrowLength = EditorGUILayout.Slider("Rotation Arrow Length", RotationArrowLength, 0.01f, 5f);

                        if (EditorGUI.EndChangeCheck())
                        {
                            SessionState.SetFloat(RotationArrowLengthKey, RotationArrowLength);
                        }
                    }

                    EditorGUI.BeginChangeCheck();
                    DrawLineManualUpVectors = EditorGUILayout.Toggle("Draw Manual Up Vectors", DrawLineManualUpVectors);

                    if (EditorGUI.EndChangeCheck())
                    {
                        SessionState.SetBool(DrawLineManualUpVectorsKey, DrawLineManualUpVectors);
                    }

                    if (DrawLineManualUpVectors)
                    {
                        EditorGUI.BeginChangeCheck();
                        ManualUpVectorLength = EditorGUILayout.Slider("Manual Up Vector Length", ManualUpVectorLength, 1f, 10f);

                        if (EditorGUI.EndChangeCheck())
                        {
                            SessionState.SetFloat(ManualUpVectorLengthKey, ManualUpVectorLength);
                        }
                    }

                    if (EditorGUI.EndChangeCheck())
                    {
                        SceneView.RepaintAll();
                    }
                }
            }

            basicSettingsFoldout = EditorGUILayout.Foldout(basicSettingsFoldout, BasicSettingsContent, true);
            SessionState.SetBool(BasicSettingsFoldoutKey, basicSettingsFoldout);

            if (basicSettingsFoldout)
            {
                using (new EditorGUI.IndentLevelScope())
                {
                    EditorGUILayout.PropertyField(transformMode);
                    EditorGUILayout.PropertyField(customLineTransform);
                    EditorGUILayout.PropertyField(lineStartClamp);
                    EditorGUILayout.PropertyField(lineEndClamp);
                    EditorGUILayout.PropertyField(loops);
                }
            }

            rotationSettingsFoldout = EditorGUILayout.Foldout(rotationSettingsFoldout, RotationSettingsContent, true);
            SessionState.SetBool(RotationSettingsFoldoutKey, rotationSettingsFoldout);

            if (rotationSettingsFoldout)
            {
                using (new EditorGUI.IndentLevelScope())
                {
                    EditorGUILayout.PropertyField(rotationType);
                    EditorGUILayout.PropertyField(flipUpVector);
                    EditorGUILayout.PropertyField(originOffset);
                    EditorGUILayout.PropertyField(velocitySearchRange);

                    if (DrawLineManualUpVectors)
                    {
                        manualUpVectorList.DoLayoutList();

                        if (GUILayout.Button("Normalize Up Vectors"))
                        {

                            for (int i = 0; i < manualUpVectors.arraySize; i++)
                            {
                                var manualUpVectorProperty = manualUpVectors.GetArrayElementAtIndex(i);

                                Vector3 upVector = manualUpVectorProperty.vector3Value;

                                if (upVector == Vector3.zero)
                                {
                                    upVector = Vector3.up;
                                }

                                manualUpVectorProperty.vector3Value = upVector.normalized;
                            }
                        }

                        EditorGUILayout.PropertyField(manualUpVectorBlend);
                    }
                }
            }

            distortionSettingsFoldout = EditorGUILayout.Foldout(distortionSettingsFoldout, DistortionSettingsContent, true);
            SessionState.SetBool(DistortionSettingsFoldoutKey, distortionSettingsFoldout);

            if (distortionSettingsFoldout)
            {
                if (distorters.arraySize <= 0)
                {
                    EditorGUILayout.HelpBox("No distorters attached to this line.\nTry adding a distortion component.", MessageType.Info);
                }

                using (new EditorGUI.IndentLevelScope())
                {
                    EditorGUILayout.PropertyField(distortionEnabled);
                    EditorGUILayout.PropertyField(distortionMode);
                    EditorGUILayout.PropertyField(distortionStrength);
                    EditorGUILayout.PropertyField(uniformDistortionStrength);
                }
            }

            serializedObject.ApplyModifiedProperties();
        }