private static string LocateRootAssetFolder <T>(string urdfFileName) where T : UnityEngine.Object
        {
            string newAssetPath = EditorUtility.OpenFolderPanel(
                "Locate package root folder",
                Path.Combine(Path.GetDirectoryName(Application.dataPath), "Assets"),
                "");

            UrdfAssetPathHandler.SetAssetRootFolder(UrdfAssetPathHandler.GetRelativeAssetPath(newAssetPath));

            return(GetAssetPathFromUrdfPath(urdfFileName));
        }
        public static GameObject Create(this Robot robot)
        {
            if (UrdfAssetPathHandler.IsValidAssetPath(robot.filename))
            {
                Debug.LogError("URDF file and ressources must be placed in Assets Folder:\n" + Application.dataPath);
                return(null);
            }

            UrdfAssetPathHandler.SetAssetRootFolder(robot);
            UrdfMaterialHandler.InitializeRobotMaterials(robot);

            GameObject gameObject = new GameObject(robot.name);

            robot.root.Create(gameObject);

            GameObjectUtility.SetParentAndAlign(gameObject, Selection.activeObject as GameObject);
            Undo.RegisterCreatedObjectUndo(gameObject, "Create " + gameObject.name);
            Selection.activeObject = gameObject;

            SetKinematic(gameObject, true);

            return(gameObject);
        }