Exemplo n.º 1
0
 public void Release()
 {
     if (gifDrawer != null)
     {
         gifDrawer.Clean();
         gifDrawer = null;
     }
     if (texture)
     {
         texture = null;
     }
     foreach (var item in subdatas)
     {
         item.Release();
     }
     subdatas.Clear();
 }
Exemplo n.º 2
0
 public void Load(string RawString, MarkDownDoc doc)
 {
     this.doc = doc;
     if (RawString.IsNullOrEmpty())
     {
         return;
     }
     if (RawString.Replace(Environment.NewLine, "") == "***")
     {
         this.type = KeyType.separator;
     }
     else if (RawString[0] == '*')
     {
         this.type = KeyType.font;
         if (RawString.IndexOf("***") == 0)
         {
             //斜体加粗
             keyValue = "BI";
             Data     = RawString.Substring(3, RawString.Length - 6);
         }
         else if (RawString.IndexOf("**") == 0)
         {
             //加粗
             keyValue = "B";
             Data     = RawString.Substring(2, RawString.Length - 4);
         }
         else if (RawString.IndexOf("*") == 0)
         {
             //斜体
             keyValue = "I";
             Data     = RawString.Substring(1, RawString.Length - 2);
         }
     }
     else if (RawString[0] == '#')
     {
         this.type = KeyType.title;
         if (RawString.IndexOf("###") == 0)
         {
             //1号标题
             keyValue = "1";
             Data     = RawString.Substring(3, RawString.Length - 3);
         }
         else if (RawString.IndexOf("##") == 0)
         {
             //3级标题
             keyValue = "2";
             Data     = RawString.Substring(2, RawString.Length - 2);
         }
         else if (RawString.IndexOf("#") == 0)
         {
             //3级标题
             keyValue = "3";
             Data     = RawString.Substring(1, RawString.Length - 1);
         }
     }
     else if (RawString[0] == '!')
     {
         this.type = KeyType.image;
         int start = RawString.IndexOf("(") + 1;
         int end   = RawString.LastIndexOf(")");
         Data = RawString.Substring(start, RawString.Length - start - (RawString.Length - end));
         var ImgAssetPath = doc.AssetDir + "/" + Data;
         if (Path.GetExtension(ImgAssetPath) == ".gif")
         {
             gifDrawer = new GUIGifDrawer();
             gifDrawer.LoadGIF(PathTools.Asset2File(ImgAssetPath));
             if (EditorUserSettings.GetConfigValue("DocAutoPlayGif") != "true")
             {
                 gifDrawer.Controller = true;
             }
             gifDrawer.Play();
         }
         else
         {
             if (PathTools.IsAssetPath(ImgAssetPath))
             {
                 this.texture = AssetDatabase.LoadAssetAtPath(ImgAssetPath, typeof(Texture2D)) as Texture2D;
             }
             else if (File.Exists(ImgAssetPath))
             {
                 byte[] img = File.ReadAllBytes(ImgAssetPath);
                 this.texture = new Texture2D(1024, 1024);
                 texture.LoadImage(img);
             }
         }
     }
     else if (RawString[0] == '(')
     {
         this.type = KeyType.link;
         int start = RawString.IndexOf("(") + 1;
         int end   = RawString.LastIndexOf(")");
         Data = RawString.Substring(start, RawString.Length - start - (RawString.Length - end));
     }
     else if (RawString.IndexOf(">>") == 0)
     {
         this.type = KeyType.doc;
         Data      = RawString.Remove(0, 2);
     }
     else if (RawString[0] == '>')
     {
         this.type = KeyType.page;
         Data      = RawString.Remove(0, 1);
     }
     else if (RawString[0] == '|')
     {
         this.type = KeyType.table;
         string[] datas = RawString.Split('|');
         for (int i = 1; i < datas.Length; i++)
         {
             if (datas[i] == "--:")
             {
                 this.type = KeyType.separator;
                 break;
             }
             MarkDownData subdata = new MarkDownData();
             subdata.Load(datas[i], this.doc);
             this.subdatas.Add(subdata);
         }
     }
     else if (RawString.IndexOf("```") == 0)
     {
         this.type = KeyType.code;
         keyValue  = RawString.Substring(3, RawString.Length - 3);
     }
     else if (RawString.IndexOf("QA") == 0)
     {
         this.type = KeyType.qa;
         keyValue  = RawString.Substring(2, RawString.Length - 2);
     }
     else if (RawString.IndexOf("/{") == 0)
     {
         this.type = KeyType.foldin;
         keyValue  = RawString.Substring(2, RawString.Length - 2);
     }
     else if (RawString.IndexOf("/}") == 0)
     {
         this.type = KeyType.foldout;
         keyValue  = RawString.Substring(2, RawString.Length - 2);
     }
     else
     {
         Data = RawString;
     }
 }