Radegast.Rendering.SceneWindow.LoadTexture C# (CSharp) Method

LoadTexture() private method

private LoadTexture ( UUID textureID, Image &texture, bool removeAlpha ) : bool
textureID UUID
texture Image
removeAlpha bool
return bool
        private bool LoadTexture(UUID textureID, ref Image texture, bool removeAlpha)
        {
            ManualResetEvent gotImage = new ManualResetEvent(false);
            Image img = null;

            try
            {
                gotImage.Reset();
                bool hasAlpha, fullAlpha, isMask;
                byte[] tgaData;
                if (RHelp.LoadCachedImage(textureID, out tgaData, out hasAlpha, out fullAlpha, out isMask))
                {
                    img = LoadTGAClass.LoadTGA(new MemoryStream(tgaData));
                }
                else
                {
                    instance.Client.Assets.RequestImage(textureID, (TextureRequestState state, AssetTexture assetTexture) =>
                        {
                            ManagedImage mi;
                            if (state == TextureRequestState.Finished && OpenJPEG.DecodeToImage(assetTexture.AssetData, out mi))
                            {

                                if (removeAlpha)
                                {
                                    if ((mi.Channels & ManagedImage.ImageChannels.Alpha) != 0)
                                    {
                                        mi.ConvertChannels(mi.Channels & ~ManagedImage.ImageChannels.Alpha);
                                    }
                                }
                                tgaData = mi.ExportTGA();
                                img = LoadTGAClass.LoadTGA(new MemoryStream(tgaData));
                                RHelp.SaveCachedImage(tgaData, textureID, (mi.Channels & ManagedImage.ImageChannels.Alpha) != 0, false, false);
                            }
                            gotImage.Set();
                        }
                    );
                    gotImage.WaitOne(30 * 1000, false);
                }
                if (img != null)
                {
                    texture = img;
                    return true;
                }
                return false;
            }
            catch (Exception e)
            {
                Logger.Log(e.Message, Helpers.LogLevel.Error, instance.Client, e);
                return false;
            }
        }
SceneWindow