private static bool TryLoadNewTexture(string section, U::UnityEngine.Texture2D texture2D, string path, ref Texture2DOverrideData overrideData, bool flip = false)
        {
            U::UnityEngine.Texture2D texture2D1;
            bool   flag;
            object dataLock = Texture2DOverride.DataLock;

            Monitor.Enter(dataLock);
            try
            {
                if (!Texture2DOverride.LoadTextureData(path, out texture2D1))
                {
                    flag = false;
                }
                else
                {
                    if (flip)
                    {
                        texture2D1 = Texture2DOverride.FlipTextureY(texture2D1);
                    }
                    texture2D1.name       = texture2D.name;
                    texture2D1.anisoLevel = texture2D.anisoLevel;
                    texture2D1.filterMode = texture2D.filterMode;
                    texture2D1.mipMapBias = texture2D.mipMapBias;
                    texture2D1.wrapMode   = texture2D.wrapMode;
                    overrideData          = new Texture2DOverrideData(texture2D, path, texture2D1);
                    Texture2DOverride.loaded.Add(texture2D.GetInstanceID(), new Texture2DCacheData(section, overrideData));
                    flag = true;
                }
            }
            finally
            {
                Monitor.Exit(dataLock);
            }
            return(flag);
        }
        protected Texture2D GetTexture()
        {
            if (base.GetType() != typeof(Sprite))
            {
                return(null);
            }
            Texture2D textured = ((Sprite)this)._get_texture();

            try
            {
                if (textured == null)
                {
                    return(textured);
                }
                if (this.overrideData.OriginalTexture2D != null)
                {
                    return(this.overrideData.OverrideTexture2D);
                }
                Texture2DOverride.LoadTexture2D(((Sprite)this).name, textured, out this.overrideData);
                if (this.overrideData.OverrideTexture2D != null)
                {
                    textured = this.overrideData.OverrideTexture2D;
                }
            }
            catch (Exception exception)
            {
                IniSettings.Error("SpriteOverride:\n" + exception.ToString());
            }
            return(textured);
        }
        static Texture2DOverride()
        {
            Texture2DOverride.DataLock      = new object();
            Texture2DOverride.unused        = new Dictionary <int, DateTime>();
            Texture2DOverride.loaded        = new Dictionary <int, Texture2DCacheData>();
            Texture2DOverride.WriterLock    = new object();
            Texture2DOverride.MAINFOLDERKEY = "sMainFolder";
            Texture2DOverride.Load();
            TimeSpan timeSpan = TimeSpan.FromSeconds(15);

            Texture2DOverride.timer = new System.Timers.Timer(timeSpan.TotalMilliseconds)
            {
                AutoReset = true
            };
            Texture2DOverride.timer.Elapsed += new ElapsedEventHandler(Texture2DOverride.timer_Elapsed);
            Texture2DOverride.timer.Start();
            Texture2DOverride.writerdata = new List <Texture2DDumpData>();
            timeSpan = TimeSpan.FromSeconds(15);
            Texture2DOverride.writertimer = new System.Timers.Timer(timeSpan.TotalMilliseconds)
            {
                AutoReset = false
            };
            Texture2DOverride.writertimer.Elapsed += new ElapsedEventHandler(Texture2DOverride.WriterTimerElapsed);
            IniSettings.LanguageDirChanged        += new Action <string>((string value) => Texture2DOverride.Load());
            IniSettings.ProcessPathDirChanged     += new Action <string>((string value) => Texture2DOverride.Load());
        }
 private static void WatcherNotice(object sender, FileSystemEventArgs e)
 {
     if (Texture2DOverride.lastraisedfile == e.FullPath && DateTime.Now < Texture2DOverride.lastraisedtime)
     {
         return;
     }
     Texture2DOverride.lastraisedfile = e.FullPath;
     Texture2DOverride.lastraisedtime = DateTime.Now.AddSeconds(1);
     Texture2DOverride.Load();
 }
Exemple #5
0
 protected override void OnDestroy()
 {
     if (base.GetType() == typeof(RawImage))
     {
         ThreadPool.QueueUserWorkItem(delegate(object x) {
             if (this.overrideData.OriginalTexture2D != null)
             {
                 Texture2DOverride.UnloadTexture2D(ref this.overrideData);
             }
         });
     }
     base.OnDestroy();
 }
        private static void WriterTimerElapsed(object sender, ElapsedEventArgs e)
        {
            object writerLock = Texture2DOverride.WriterLock;

            Monitor.Enter(writerLock);
            try
            {
                Texture2DOverride.StopWatchTextFiles();
                try
                {
                    if (!Directory.Exists(Texture2DOverride.TranslationImageIniFileDir))
                    {
                        Directory.CreateDirectory(Texture2DOverride.TranslationImageIniFileDir);
                    }
                    if (!File.Exists(Texture2DOverride.TranslationImageIniFilePath))
                    {
                        Texture2DOverride.LoadMainIniFile();
                    }
                    if (!Directory.Exists(Texture2DOverride.TranslationImageDir))
                    {
                        Directory.CreateDirectory(Texture2DOverride.TranslationImageDir);
                    }
                    foreach (Texture2DDumpData writerdatum in Texture2DOverride.writerdata)
                    {
                        Texture2DOverride.mainini.WriteValue(writerdatum.Section, "sPath", writerdatum.Path);
                        if (writerdatum.Format != TextureFormat.DXT1 && writerdatum.Format != TextureFormat.DXT5)
                        {
                            continue;
                        }
                        Texture2DOverride.mainini.WriteValue(writerdatum.Section, "bFlipTexture", true);
                    }
                }
                catch (Exception exception)
                {
                    IniSettings.Error(string.Concat("DumpTexture2D:\n", exception.ToString()));
                }
                Texture2DOverride.writerdata.Clear();
                Texture2DOverride.WatchTextFiles();
            }
            finally
            {
                Monitor.Exit(writerLock);
            }
        }
 protected void Swap(ref Texture value)
 {
     if (base.GetType() == typeof(Material))
     {
         try
         {
             if (value == null)
             {
                 if (this.overrideData.OriginalTexture2D != null)
                 {
                     Texture2DOverride.UnloadTexture2D(ref this.overrideData);
                 }
             }
             else
             {
                 Texture2D textured = value as Texture2D;
                 if (textured != null)
                 {
                     if (this.overrideData.OriginalTexture2D != null)
                     {
                         int instanceID = textured.GetInstanceID();
                         if ((this.overrideData.InstanceID == instanceID) || (this.overrideData.OverrideID == instanceID))
                         {
                             value = this.overrideData.OverrideTexture2D;
                             return;
                         }
                         Texture2DOverride.UnloadTexture2D(ref this.overrideData);
                     }
                     Texture2DOverride.LoadTexture2D(((Material)this).name, textured, out this.overrideData);
                     if (this.overrideData.OverrideTexture2D != null)
                     {
                         value = this.overrideData.OverrideTexture2D;
                     }
                 }
             }
         }
         catch (Exception exception)
         {
             IniSettings.Error("MaterialOverride:\n" + exception.ToString());
         }
     }
 }
Exemple #8
0
 private void SetOurOverrideTexture(ref U::UnityEngine.Texture value)
 {
     if (base.GetType() == typeof(RawImage))
     {
         try
         {
             if (value == null)
             {
                 if (this.overrideData.OriginalTexture2D != null)
                 {
                     Texture2DOverride.UnloadTexture2D(ref this.overrideData);
                 }
             }
             else
             {
                 U::UnityEngine.Texture2D textured = value as U::UnityEngine.Texture2D;
                 if (textured != null)
                 {
                     if (this.overrideData.OriginalTexture2D != null)
                     {
                         int instanceID = textured.GetInstanceID();
                         if ((this.overrideData.InstanceID == instanceID) || (this.overrideData.OverrideID == instanceID))
                         {
                             value = this.overrideData.OverrideTexture2D;
                             return;
                         }
                         Texture2DOverride.UnloadTexture2D(ref this.overrideData);
                     }
                     Texture2DOverride.LoadTexture2D(((RawImage)this).name, textured, out this.overrideData);
                     if (this.overrideData.OverrideTexture2D != null)
                     {
                         value = this.overrideData.OverrideTexture2D;
                     }
                 }
             }
         }
         catch (Exception exception)
         {
             IniSettings.Error("RawImageOverride:\n" + exception.ToString());
         }
     }
 }
 protected static void Swap(ref Texture2D texture)
 {
     try
     {
         if (texture == null)
         {
             if (overrideData.OriginalTexture2D != null)
             {
                 Texture2DOverride.UnloadTexture2D(ref overrideData);
             }
         }
         else
         {
             if (overrideData.OriginalTexture2D != null)
             {
                 int instanceID = texture.GetInstanceID();
                 if (overrideData.InstanceID == instanceID)
                 {
                     texture = overrideData.OverrideTextureCache;
                     return;
                 }
                 Texture2DOverride.UnloadTexture2D(ref overrideData);
             }
             Texture2DOverride.LoadTexture2D(texture.name, texture, out overrideData);
             if (overrideData.OverrideTexture2D != null)
             {
                 if ((texture.width != overrideData.OverrideTexture2D.width) || (texture.height != overrideData.OverrideTexture2D.height))
                 {
                     texture.Resize(overrideData.OverrideTexture2D.width, overrideData.OverrideTexture2D.height);
                 }
                 texture.SetPixels32(overrideData.OverrideTexture2D.GetPixels32());
                 texture.Apply();
                 overrideData.OverrideTextureCache = texture;
             }
         }
     }
     catch (Exception exception)
     {
         IniSettings.Error("CursorOverride:\n" + exception.ToString());
     }
 }
        internal static void LoadTexture2D(string objectName, U::UnityEngine.Texture2D texture2D, out Texture2DOverrideData overrideData)
        {
            string        str;
            Texture2DData texture2DDatum;
            string        texturePath;

            overrideData = new Texture2DOverrideData();
            try
            {
                if (!string.IsNullOrEmpty(texture2D.name))
                {
                    if (string.IsNullOrEmpty(objectName))
                    {
                        objectName = string.Empty;
                    }
                    str = (string.IsNullOrEmpty(objectName) || objectName == texture2D.name ? texture2D.name : string.Format("{0}:{1}", objectName, texture2D.name));
                    str = Texture2DOverride.Encode(str);
                    if (!Texture2DOverride.inidata.TryGetValue(str, out texture2DDatum))
                    {
                        if (Texture2DOverride.TryLoadCacheTexture(texture2D, ref overrideData))
                        {
                            texturePath = overrideData.TexturePath;
                        }
                        else if (!Texture2DOverride.uniqueimagesdata.TryGetValue(texture2D.name, out texturePath))
                        {
                            texturePath = texture2D.name;
                        }
                        else
                        {
                            bool   flag  = false;
                            string lower = Path.GetExtension(texturePath).ToLower();
                            if (lower == ".dds" || lower == ".psd")
                            {
                                flag = true;
                            }
                            Texture2DOverride.TryLoadNewTexture(str, texture2D, texturePath, ref overrideData, flag);
                        }
                        Texture2DOverride.inidata.Add(str, new Texture2DData(texturePath, false));
                        if (IniSettings.FindImage)
                        {
                            object writerLock = Texture2DOverride.WriterLock;
                            Monitor.Enter(writerLock);
                            try
                            {
                                Texture2DOverride.writerdata.Add(new Texture2DDumpData(str, texturePath, texture2D.format));
                                Texture2DOverride.writertimer.Start();
                            }
                            finally
                            {
                                Monitor.Exit(writerLock);
                            }
                        }
                    }
                    else if (texture2DDatum.Exists && !Texture2DOverride.TryLoadCacheTexture(texture2D, ref overrideData))
                    {
                        bool   flag1  = false;
                        string lower1 = Path.GetExtension(texture2DDatum.Path).ToLower();
                        if (lower1 == ".dds" || lower1 == ".psd")
                        {
                            flag1 = true;
                        }
                        Texture2DOverride.TryLoadNewTexture(str, texture2D, texture2DDatum.Path, ref overrideData, flag1);
                    }
                }
            }
            catch (Exception exception)
            {
                IniSettings.Error(string.Concat("LoadTexture2D:\n", exception.ToString()));
            }
        }
        private static void Load()
        {
            Texture2DCacheData texture2DCacheDatum;
            object             dataLock = Texture2DOverride.DataLock;

            Monitor.Enter(dataLock);
            try
            {
                Texture2DOverride.StopWatchTextFiles();
                Dictionary <int, Texture2DCacheData> nums = new Dictionary <int, Texture2DCacheData>(Texture2DOverride.loaded);
                Texture2DOverride.unused.Clear();
                Texture2DOverride.loaded.Clear();
                Texture2DOverride.LoadMainIniFile();
                Texture2DOverride.inidata          = Texture2DOverride.ParseIniData(Texture2DOverride.mainini);
                Texture2DOverride.uniqueimagesdata = Texture2DOverride.GetUniqueImageFiles(Texture2DOverride.TranslationImageDir);
                if (Texture2DOverride.GlobalTranslationImageIniFilePath != Texture2DOverride.TranslationImageDir)
                {
                    Dictionary <string, Texture2DData> strs = Texture2DOverride.ParseIniData(new IniFile(Texture2DOverride.GlobalTranslationImageIniFilePath));
                    foreach (KeyValuePair <string, Texture2DData> keyValuePair in strs)
                    {
                        if (Texture2DOverride.inidata.ContainsKey(keyValuePair.Key))
                        {
                            continue;
                        }
                        Texture2DOverride.inidata.Add(keyValuePair.Key, keyValuePair.Value);
                    }
                    strs.Clear();
                    strs = null;
                    Dictionary <string, string> uniqueImageFiles = Texture2DOverride.GetUniqueImageFiles(Texture2DOverride.GlobalTranslationImageDir);
                    foreach (KeyValuePair <string, string> uniqueImageFile in uniqueImageFiles)
                    {
                        if (Texture2DOverride.uniqueimagesdata.ContainsKey(uniqueImageFile.Key))
                        {
                            continue;
                        }
                        Texture2DOverride.uniqueimagesdata.Add(uniqueImageFile.Key, uniqueImageFile.Value);
                    }
                    uniqueImageFiles.Clear();
                    uniqueImageFiles = null;
                }
                Texture2DOverride.WatchTextFiles();
                foreach (KeyValuePair <int, Texture2DCacheData> num in nums)
                {
                    Texture2DOverrideData overrideData = num.Value.OverrideData;
                    Texture2DOverride.LoadTexture2D(num.Value.ObjectName, overrideData.OriginalTexture2D, out overrideData);
                    if (!Texture2DOverride.loaded.TryGetValue(overrideData.InstanceID, out texture2DCacheDatum))
                    {
                        continue;
                    }
                    texture2DCacheDatum.IncreaseAmount(num.Value.Count);
                }
                if (IniSettings.DebugMode || IniSettings.FindImage)
                {
                    int count = Texture2DOverride.inidata.Count;
                    IniSettings.Log(string.Concat("ImageSettingsLoaded: ", count.ToString()));
                }
            }
            finally
            {
                Monitor.Exit(dataLock);
            }
        }