Exemple #1
0
        public void OnInspectorGUI()
        {
            var skin = InspectorEditor.Skin;

            using (GUI.AlignBlock.Center)
                GUILayout.Label(GUI.MakeLabel("AGXUnity Editor Settings", 24, true), skin.Label);

            BuildPlayer_CopyBinaries = InspectorGUI.Toggle(GUI.MakeLabel("<b>Build:</b> Copy AGX Dynamics binaries",
                                                                         false,
                                                                         "[Recommended enabled]\nCopy dependent AGX Dynamics binaries to target player directory."),
                                                           BuildPlayer_CopyBinaries);
            AGXDynamics_LogPath = InspectorGUI.ToggleSaveFile(GUI.MakeLabel("AGX Dynamics log"),
                                                              AGXDynamics_LogEnabled,
                                                              enable => AGXDynamics_LogEnabled = enable,
                                                              AGXDynamics_LogPath,
                                                              "AGXDynamicsLog",
                                                              "txt",
                                                              "AGX Dynamics log filename",
                                                              extension => true);

            if (ExternalAGXInitializer.IsApplied)
            {
                DirectoryInfo newAgxDir = null;
                if (InspectorGUI.SelectFolder(GUI.MakeLabel("AGX Dynamics directory"),
                                              ExternalAGXInitializer.Instance.AGX_DIR,
                                              "AGX Dynamics directory",
                                              newFolder => newAgxDir = new DirectoryInfo(newFolder)))
                {
                    if (ExternalAGXInitializer.FindType(newAgxDir) == ExternalAGXInitializer.AGXDirectoryType.Unknown)
                    {
                        Debug.LogError($"ERROR: {newAgxDir.FullName} doesn't seems to be an AGX Dynamics root folder.");
                    }
                    else if (EditorUtility.DisplayDialog("Change AGX Dynamics directory",
                                                         $"Change from {ExternalAGXInitializer.Instance.AGX_DIR} to {newAgxDir.FullName}?\n\n" +
                                                         "Unity will restart during the change.",
                                                         "Yes",
                                                         "Cancel"))
                    {
                        ExternalAGXInitializer.ChangeRootDirectory(newAgxDir);
                    }
                }
            }
            else if (!IO.Utils.AGXDynamicsInstalledInProject && ExternalAGXInitializer.UserSaidNo)
            {
                var rect     = EditorGUILayout.GetControlRect();
                var orgWidth = rect.width;
                rect.width = EditorGUIUtility.labelWidth;
                EditorGUI.PrefixLabel(rect, GUI.MakeLabel("Select AGX Dynamics root folder"), skin.Label);
                rect.x    += rect.width;
                rect.width = orgWidth - EditorGUIUtility.labelWidth;
                if (UnityEngine.GUI.Button(rect, GUI.MakeLabel("AGX Dynamics root directory...")))
                {
                    var agxDir = EditorUtility.OpenFolderPanel("AGX Dynamics root directory",
                                                               "Assets",
                                                               "");
                    if (!string.IsNullOrEmpty(agxDir))
                    {
                        var agxDirInfo = new DirectoryInfo(agxDir);
                        var type       = ExternalAGXInitializer.FindType(agxDirInfo);
                        if (type == ExternalAGXInitializer.AGXDirectoryType.Unknown)
                        {
                            Debug.LogWarning($"{agxDir} isn't recognized as an AGX Dynamics root directory.");
                        }
                        else if (EditorUtility.DisplayDialog("Add AGX Dynamics directory",
                                                             $"Set AGX Dynamics root directory to {agxDir}?\n\n" +
                                                             "Unity will restart during the process.",
                                                             "Yes",
                                                             "Cancel"))
                        {
                            ExternalAGXInitializer.UserSaidNo = false;
                            ExternalAGXInitializer.ChangeRootDirectory(agxDirInfo);
                        }
                    }
                }
            }

            InspectorGUI.Separator(1, 4);

            // BuiltInToolsTool settings GUI.
            {
                HandleKeyHandlerGUI(GUI.MakeLabel("Select game object"), BuiltInToolsTool_SelectGameObjectKeyHandler);
                HandleKeyHandlerGUI(GUI.MakeLabel("Select rigid body game object"), BuiltInToolsTool_SelectRigidBodyKeyHandler);
                HandleKeyHandlerGUI(GUI.MakeLabel("Pick handler (scene view)"), BuiltInToolsTool_PickHandlerKeyHandler);
            }
        }