string GetAssetVersion(Hashtable _definition)
        {
            string name = (string)_definition["Name"];

            if (name.Equals("PlayMaker"))
            {
                return(MyUtils.GetPlayMakerVersion());
            }

            if (_definition.ContainsKey("VersionScanMethod"))
            {
                Hashtable _versionScanDetails = (Hashtable)_definition["VersionScanMethod"];
                if (_versionScanDetails.ContainsKey("FindInTextFile"))
                {
                    try
                    {
                        Regex pattern = new Regex((string)_versionScanDetails["VersionRegexPattern"]);

                        using (StreamReader inputReader = new StreamReader(Application.dataPath + _versionScanDetails["FindInTextFile"]))
                        {
                            while (!inputReader.EndOfStream)
                            {
                                try
                                {
                                    Match m = pattern.Match(inputReader.ReadLine());
                                    if (m.Success)
                                    {
                                        return(m.Value);
                                    }
                                }
                                catch (FormatException) {}
                                catch (OverflowException) {}
                            }
                        }
                    }catch (Exception e)
                    {
                        Debug.LogError("Project Scanning error for version scanning of " + name + " :" + e.Message);
                    }
                }
                else if (_versionScanDetails.ContainsKey("FindInVersionInfo"))
                {
                    string _jsonText = File.ReadAllText(Application.dataPath + _versionScanDetails["FindInVersionInfo"]);
                    return(VersionInfo.VersionInfoFromJson(_jsonText).ToString());
                }
            }

            return("n/a");
        }
        /// <summary>
        /// Launch the scanning process.
        /// </summary>
        public void LaunchScanningProcess(bool ConsoleOutput, string EditorPlayerPrefKey = "")
        {
            OutputInConsole = ConsoleOutput;

            _editorPlayerPrefKey = EditorPlayerPrefKey;

            if (OutputInConsole)
            {
                Debug.Log("Project Scanner: Downloading Assets Description");
            }

            _hasError   = false;
            _isScanning = true;
            AssetsList  = new SortedDictionary <string, AssetItem>();

            _wwwWrapper = new HttpWrapper();

            WWWForm _form = new WWWForm();

            _form.AddField("UnityVersion", Application.unityVersion);
            _form.AddField("PlayMakerVersion", MyUtils.GetPlayMakerVersion());

            _wwwWrapper.GET
            (
                "http://www.fabrejean.net/projects/playmaker_ecosystem/assetsDescription"
                ,
                _form
                ,
                (WWW www) =>
            {
                if (!string.IsNullOrEmpty(www.error))
                {
                    Debug.LogError("Project Scanner: Error downloading assets definition :" + www.error);

                    _isScanning = false;
                    _hasError   = true;
                }
                else
                {
                    EditorCoroutine.start(DoScanProject(www.text));
                }
            }
            );
        }