public override void OnInspectorGUI()

in Assets/MixedRealityToolkit.SDK/Inspectors/UX/Tooltips/ToolTipConnectorInspector.cs [47:176]


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

            if (multiLineHelpBoxStyle == null)
            {
                multiLineHelpBoxStyle = new GUIStyle(EditorStyles.helpBox);
                multiLineHelpBoxStyle.wordWrap = true;
            }

            connectorTarget = serializedObject.FindProperty("target");
            connectorFollowType = serializedObject.FindProperty("connectorFollowType");
            pivotMode = serializedObject.FindProperty("pivotMode");
            pivotDirection = serializedObject.FindProperty("pivotDirection");
            pivotDirectionOrient = serializedObject.FindProperty("pivotDirectionOrient");
            manualPivotDirection = serializedObject.FindProperty("manualPivotDirection");
            manualPivotLocalPosition = serializedObject.FindProperty("manualPivotLocalPosition");
            pivotDistance = serializedObject.FindProperty("pivotDistance");

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

            if (editorSettingsFoldout)
            {
                EditorGUI.BeginChangeCheck();
                DrawManualDirectionHandle = EditorGUILayout.Toggle("Draw Manual Direction Handle", DrawManualDirectionHandle);

                if (EditorGUI.EndChangeCheck())
                {
                    SessionState.SetBool(DrawManualDirectionHandleKey, DrawManualDirectionHandle);
                }
            }

            if (connectorTarget.objectReferenceValue == null)
            {
                EditorGUILayout.HelpBox("No target set. ToolTip will not use connector component.", MessageType.Info);
                EditorGUILayout.PropertyField(connectorTarget);
            }
            else
            {
                EditorGUILayout.PropertyField(connectorTarget);

                string helpText = string.Empty;
                switch (connector.ConnectorFollowingType)
                {
                    case ConnectorFollowType.AnchorOnly:
                        helpText = "Only the tooltip's anchor will follow the target. Tooltip content will not be altered.";
                        break;

                    case ConnectorFollowType.Position:
                        helpText = "The entire tooltip will follow the target. Tooltip will not rotate.";
                        break;

                    case ConnectorFollowType.PositionAndYRotation:
                        helpText = "The entire tooltip will follow the target. Tooltip will match target's Y rotation.";
                        break;

                    case ConnectorFollowType.PositionAndXYRotation:
                        helpText = "The entire tooltip will follow the target. Tooltip will match target's X and Y rotation.";
                        break;

                }

                EditorGUILayout.BeginVertical(EditorStyles.helpBox);
                EditorGUILayout.LabelField(helpText, EditorStyles.miniLabel);
                EditorGUILayout.EndVertical();
                EditorGUILayout.PropertyField(connectorFollowType);

                switch (connector.ConnectorFollowingType)
                {
                    case ConnectorFollowType.AnchorOnly:
                        // Pivot mode doesn't apply to anchor-only connections
                        break;

                    default:
                        EditorGUILayout.PropertyField(pivotMode);
                        switch (connector.PivotMode)
                        {
                            case ConnectorPivotMode.Manual:
                                // We just want to set the pivot ourselves
                                EditorGUILayout.BeginVertical(EditorStyles.helpBox);
                                EditorGUILayout.LabelField("Pivot will not be altered by connector.", EditorStyles.miniLabel);
                                EditorGUILayout.EndVertical();
                                break;

                            case ConnectorPivotMode.Automatic:
                                EditorGUILayout.PropertyField(pivotDirectionOrient);
                                switch (connector.PivotDirectionOrient)
                                {
                                    case ConnectorOrientType.OrientToCamera:
                                        EditorGUILayout.BeginVertical(EditorStyles.helpBox);
                                        EditorGUILayout.LabelField("Pivot will be set in direction relative to camera.", EditorStyles.miniLabel);
                                        EditorGUILayout.EndVertical();
                                        break;

                                    case ConnectorOrientType.OrientToObject:
                                        EditorGUILayout.BeginVertical(EditorStyles.helpBox);
                                        EditorGUILayout.LabelField("Pivot will be set in direction relative to target.", EditorStyles.miniLabel);
                                        EditorGUILayout.EndVertical();
                                        break;
                                }
                                ConnectorPivotDirection newPivotDirection = DrawPivotDirection(connector.PivotDirection);
                                pivotDirection.enumValueIndex = (int)newPivotDirection;
                                switch (connector.PivotDirection)
                                {
                                    case ConnectorPivotDirection.Manual:
                                        EditorGUILayout.PropertyField(manualPivotDirection);
                                        break;

                                    default:
                                        break;
                                }
                                EditorGUILayout.PropertyField(pivotDistance);
                                break;

                            case ConnectorPivotMode.LocalPosition:
                                EditorGUILayout.BeginVertical(EditorStyles.helpBox);
                                EditorGUILayout.LabelField("Pivot will be set to position relative to target.", EditorStyles.miniLabel);
                                EditorGUILayout.EndVertical();
                                EditorGUILayout.PropertyField(manualPivotLocalPosition);
                                break;
                        }
                        break;
                }
            }

            serializedObject.ApplyModifiedProperties();

            EditorUtility.SetDirty(connector);
        }