public override void OnInspectorGUI()
        {
            RenderHeader();

            EditorGUILayout.LabelField("Controller Input Mappings", EditorStyles.boldLabel);
            EditorGUILayout.HelpBox("Use this profile to define all the controllers and their inputs your users will be able to use in your application.\n\n" +
                                    "You'll want to define all your Input Actions and Controller Data Providers first so you can wire up actions to hardware sensors, controllers, gestures, and other input devices.", MessageType.Info);
            EditorGUILayout.Space();

            ThisProfile.CheckProfileLock();
            serializedObject.Update();

            EditorGUILayout.LabelField("Select a profile type:");

            changed = false;

            var showDropdown = EditorGUILayout.DropdownButton(AddMappingDefinitionContent, FocusType.Keyboard);

            if (Event.current.type == EventType.Repaint)
            {
                dropdownRect = GUILayoutUtility.GetLastRect();
            }

            if (showDropdown)
            {
                TypeReferencePropertyDrawer.DisplayDropDown(dropdownRect, mappingTypes, null, TypeGrouping.ByNamespaceFlat);
            }

            if (Event.current.type == EventType.ExecuteCommand)
            {
                if (Event.current.commandName == TypeReferencePropertyDrawer.TypeReferenceUpdated)
                {
                    controllerMappingProfiles.arraySize += 1;
                    var newItem = controllerMappingProfiles.GetArrayElementAtIndex(controllerMappingProfiles.arraySize - 1);
                    CreateNewProfileInstance(ThisProfile, newItem, TypeReferencePropertyDrawer.SelectedType);

                    TypeReferencePropertyDrawer.SelectedType      = null;
                    TypeReferencePropertyDrawer.SelectedReference = null;

                    changed = true;
                }
            }

            EditorGUILayout.Space();

            for (int i = 0; i < controllerMappingProfiles.arraySize; i++)
            {
                var controllerProfile = controllerMappingProfiles.GetArrayElementAtIndex(i);

                EditorGUILayout.BeginHorizontal();
                changed |= RenderProfile(ThisProfile, controllerProfile, GUIContent.none, false);

                if (GUILayout.Button(RemoveMappingDefinitionContent, EditorStyles.miniButtonRight, GUILayout.Width(24f)))
                {
                    controllerMappingProfiles.DeleteArrayElementAtIndex(i);
                    changed = true;
                }

                EditorGUILayout.EndHorizontal();

                if (changed)
                {
                    break;
                }
            }

            serializedObject.ApplyModifiedProperties();

            if (changed && MixedRealityToolkit.IsInitialized)
            {
                EditorApplication.delayCall += () => MixedRealityToolkit.Instance.ResetProfile(MixedRealityToolkit.Instance.ActiveProfile);
            }
        }
 public void DeleteAllDataPoints()
 {
     Logger.Info("Deleting " + ThisProfile.ObservableDatapoints.Count + " datapoints...");
     ThisProfile.DeleteAllTimepoints();
     Logger.Info("Deleted all data points.");
 }