/// <summary>
 /// Release all the managed resources
 /// </summary>
 public void Release()
 {
     if (ArrayTexture != null)
     {
         ArrayTexture.Destroy();
         ArrayTexture = null;
     }
 }
        /// <summary>
        /// Launches the Texture2DArray generation (already handles NeedsToUpdateVolumeTexture and alwaysGenerateOnUpdate parameters check)
        /// </summary>
        public void Generate()
        {
            if (NeedsToUpdateTexture || alwaysGenerateOnUpdate)
            {
                if (_texturesList.Count > 0)
                {
                    if (NeedsToUpdateTexture)
                    {
                        if (ArrayTexture != null)
                        {
                            ArrayTexture.Destroy();
                            ArrayTexture = null;
                        }

                        ArrayTexture = new Texture2DArray(RequiredSizeX, RequiredSizeY, _texturesList.Count, _requiredTextureFormat, false, _linear);
                    }

                    for (int i = 0; i < _texturesList.Count; ++i)
                    {
                        Graphics.CopyTexture(_texturesList[i], 0, 0, 0, 0, RequiredSizeX, RequiredSizeY, ArrayTexture, i, 0, 0, 0);
                    }

                    HasTexture = true;
                }
                else
                {
                    if (ArrayTexture != null)
                    {
                        ArrayTexture.Destroy();
                        ArrayTexture = null;
                    }
                    HasTexture = false;
                }

                NeedsToUpdateTexture = false;

                RaiseTextureUpdatedEvent();
            }
        }