private void OnGUI() { //Styles definitions GUIStyle titleStyle = new GUIStyle(EditorStyles.boldLabel) { alignment = TextAnchor.MiddleLeft, fontSize = 13 }; GUIStyle buttonStyle = new GUIStyle(EditorStyles.miniButtonRight) { fixedWidth = 75 }; //Window title GUILayout.Space(10); GUILayout.Label("Select Axis Type", titleStyle); //Select the original up axis of the imported mesh GUILayout.Space(5); EditorGUILayout.BeginHorizontal(); settings.choosenAxis = (ImportSettings.axisType)EditorGUILayout.EnumPopup( "Select Axis Type", settings.choosenAxis); EditorGUILayout.EndHorizontal(); //Window title GUILayout.Space(10); GUILayout.Label("Select Convex Decomposer", titleStyle); //Select the mesh decomposer GUILayout.Space(5); EditorGUILayout.BeginHorizontal(); settings.convexMethod = (ImportSettings.convexDecomposer)EditorGUILayout.EnumPopup( "Mesh Decomposer", settings.convexMethod); EditorGUILayout.EndHorizontal(); //Import Robot button GUILayout.Space(10); if (GUILayout.Button("Import URDF")) { if (urdfFile != "") { showLoadBar = true; EditorCoroutineUtility.StartCoroutine(UrdfRobotExtensions.Create(urdfFile, settings, showLoadBar), this); } } if (showLoadBar) { float progress = (settings.totalLinks == 0) ? 0 : ((float)settings.linksLoaded / (float)settings.totalLinks); EditorGUI.ProgressBar(new Rect(3, 400, position.width - 6, 20), progress, String.Format("{0}/{1} Links Loaded", settings.linksLoaded, settings.totalLinks)); if (progress == 1) { Close(); } } }
private static void CreateUrdfObject() { string urdfFile = EditorUtility.OpenFilePanel( "Import local URDF", Path.Combine(Path.GetDirectoryName(Application.dataPath), "Assets"), "urdf"); if (urdfFile != "") { UrdfRobotExtensions.Create(urdfFile); } }
private static void CreateUrdfObject() { //Get path to asset, check if it's a urdf file string assetPath = AssetDatabase.GetAssetPath(Selection.activeObject); if (Path.GetExtension(assetPath)?.ToLower() == ".urdf") { UrdfRobotExtensions.Create(UrdfAssetPathHandler.GetFullAssetPath(assetPath)); } else { EditorUtility.DisplayDialog("URDF Import", "The file you selected was not a URDF file. A robot can only be imported from a valid URDF file.", "Ok"); } }
private void OnGUI() { //Styles definitions GUIStyle titleStyle = new GUIStyle(EditorStyles.boldLabel) { alignment = TextAnchor.MiddleLeft, fontSize = 13 }; GUIStyle buttonStyle = new GUIStyle(EditorStyles.miniButtonRight) { fixedWidth = 75 }; //Window title GUILayout.Space(10); GUILayout.Label("Select Axis Type", titleStyle); //Select the original up axis of the imported mesh GUILayout.Space(5); EditorGUILayout.BeginHorizontal(); settings.choosenAxis = (ImportSettings.axisType)EditorGUILayout.EnumPopup( "Select Axis Type", settings.choosenAxis); EditorGUILayout.EndHorizontal(); //Window title GUILayout.Space(10); GUILayout.Label("Select Convex Decomposer", titleStyle); //Select the mesh decomposer GUILayout.Space(5); EditorGUILayout.BeginHorizontal(); settings.convexMethod = (ImportSettings.convexDecomposer)EditorGUILayout.EnumPopup( "Mesh Decomposer", settings.convexMethod); EditorGUILayout.EndHorizontal(); //Import Robot button GUILayout.Space(10); if (GUILayout.Button("Import URDF")) { if (urdfFile != "") { UrdfRobotExtensions.Create(urdfFile, settings); } Close(); } }
private static void CreateUrdfObject() { UrdfRobotExtensions.Create(); }
public override void OnInspectorGUI() { if (buttonStyle == null) { buttonStyle = new GUIStyle(EditorStyles.miniButtonRight) { fixedWidth = 75 } } ; urdfRobot = (UrdfRobot)target; EditorGUILayout.PropertyField(axisType, new GUIContent("Axis Type")); serializedObject.ApplyModifiedProperties(); UrdfRobotExtensions.CorrectAxis(urdfRobot.gameObject); GUILayout.Space(5); GUILayout.Label("All Rigidbodies", EditorStyles.boldLabel); DisplaySettingsToggle(new GUIContent("Use Gravity", "If disabled, robot is not affected by gravity."), urdfRobot.SetRigidbodiesUseGravity, UrdfRobot.useGravity); DisplaySettingsToggle(new GUIContent("Use Inertia from URDF", "If disabled, Unity will generate new inertia tensor values automatically."), urdfRobot.SetUseUrdfInertiaData, UrdfRobot.useUrdfInertiaData); DisplaySettingsToggle(new GUIContent("Default Space"), urdfRobot.ChangeToCorrectedSpace, UrdfRobot.changetoCorrectedSpace); GUILayout.Space(5); GUILayout.Label("All Colliders", EditorStyles.boldLabel); DisplaySettingsToggle(new GUIContent("Convex"), urdfRobot.SetCollidersConvex, UrdfRobot.collidersConvex); GUILayout.Space(5); GUILayout.Label("All Joints", EditorStyles.boldLabel); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Generate Unique Joint Names"); if (GUILayout.Button("Generate", new GUIStyle(EditorStyles.miniButton) { fixedWidth = 155 })) { urdfRobot.GenerateUniqueJointNames(); } EditorGUILayout.EndHorizontal(); GUILayout.Space(5); EditorGUILayout.PropertyField(axisType, new GUIContent("Axis Type", "Adjust this if the models that make up your robot are facing the wrong direction.")); serializedObject.ApplyModifiedProperties(); UrdfRobotExtensions.CorrectAxis(urdfRobot.gameObject); if (urdfRobot.GetComponent <RosSharp.Control.Controller>() == null || urdfRobot.GetComponent <RosSharp.Control.FKRobot>() == null) { GUILayout.Label("Components", EditorStyles.boldLabel); GUILayout.BeginHorizontal(); if (GUILayout.Button(urdfRobot.GetComponent <RosSharp.Control.Controller>() == null? "Add Controller": "Remove Controller")) { urdfRobot.AddController(); } if (urdfRobot.GetComponent <RosSharp.Control.FKRobot>() == null) { if (GUILayout.Button("Add Forward Kinematics")) { urdfRobot.gameObject.AddComponent <RosSharp.Control.FKRobot>(); } } GUILayout.EndHorizontal(); } GUILayout.Space(5); GUILayout.Label("URDF Files", EditorStyles.boldLabel); GUILayout.BeginHorizontal(); if (GUILayout.Button("Export robot to URDF")) { exportRoot = EditorUtility.OpenFolderPanel("Select export directory", exportRoot, ""); if (exportRoot.Length == 0) { return; } else if (!Directory.Exists(exportRoot)) { EditorUtility.DisplayDialog("Export Error", "Export root folder must be defined and folder must exist.", "Ok"); } else { urdfRobot.ExportRobotToUrdf(exportRoot); SetEditorPrefs(); } } GUILayout.Space(5); if (GUILayout.Button("Compare URDF Files")) { CompareURDF window = (CompareURDF)EditorWindow.GetWindow(typeof(CompareURDF)); window.minSize = new Vector2(500, 200); window.GetEditorPrefs(); window.Show(); } GUILayout.EndHorizontal(); }
public override void OnInspectorGUI() { if (buttonStyle == null) { buttonStyle = new GUIStyle(EditorStyles.miniButtonRight) { fixedWidth = 75 } } ; urdfRobot = (UrdfRobot)target; GUILayout.Space(5); GUILayout.Label("All Rigidbodies", EditorStyles.boldLabel); DisplaySettingsToggle(new GUIContent("Use Gravity"), urdfRobot.SetRigidbodiesUseGravity); DisplaySettingsToggle(new GUIContent("Use Inertia from URDF", "If disabled, Unity will generate new inertia tensor values automatically."), urdfRobot.SetUseUrdfInertiaData); DisplaySettingsToggle(new GUIContent("Default Space"), urdfRobot.ChangeToCorrectedSpace); GUILayout.Space(5); GUILayout.Label("All Colliders", EditorStyles.boldLabel); DisplaySettingsToggle(new GUIContent("Convex"), urdfRobot.SetCollidersConvex); GUILayout.Space(5); GUILayout.Label("All Joints", EditorStyles.boldLabel); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Generate Unique Joint Names"); if (GUILayout.Button("Generate", new GUIStyle(EditorStyles.miniButton) { fixedWidth = 155 })) { urdfRobot.GenerateUniqueJointNames(); } EditorGUILayout.EndHorizontal(); GUILayout.Space(5); EditorGUILayout.PropertyField(axisType, new GUIContent("Axis Type")); serializedObject.ApplyModifiedProperties(); UrdfRobotExtensions.CorrectAxis(urdfRobot.gameObject, urdfRobot.choosenAxis); GUILayout.Label("Helper Scripts", EditorStyles.boldLabel); DisplaySettingsToggle(new GUIContent("Controller Script"), urdfRobot.AddController); DisplaySettingsToggle(new GUIContent("Forward Kinematics Script"), urdfRobot.AddFkRobot); GUILayout.Space(5); if (GUILayout.Button("Export robot to URDF file")) { // Get existing open window or if none, make a new one: UrdfExportEditorWindow window = (UrdfExportEditorWindow)EditorWindow.GetWindow(typeof(UrdfExportEditorWindow)); window.urdfRobot = urdfRobot; window.minSize = new Vector2(500, 200); window.GetEditorPrefs(); window.Show(); } GUILayout.Space(5); if (GUILayout.Button("Compare URDF Files")) { CompareURDF window = (CompareURDF)EditorWindow.GetWindow(typeof(CompareURDF)); window.minSize = new Vector2(500, 200); window.GetEditorPrefs(); window.Show(); } }