/// <summary>
        /// <para>Set the material scale, which is used for all the textures that are part of this ProceduralMaterial.</para>
        /// </summary>
        /// <param name="material"></param>
        /// <param name="scale"></param>
        public void SetMaterialScale(ProceduralMaterial material, Vector2 scale)
        {
            if (material == null)
            {
                throw new ArgumentException("Invalid ProceduralMaterial");
            }
            ScriptingProceduralMaterialInformation materialInformation = this.GetMaterialInformation(material);

            materialInformation.scale = scale;
            this.SetMaterialInformation(material, materialInformation);
        }
        /// <summary>
        /// <para>Set the material offset, which is used for all the textures that are part of this ProceduralMaterial.</para>
        /// </summary>
        /// <param name="material"></param>
        /// <param name="offset"></param>
        public void SetMaterialOffset(ProceduralMaterial material, Vector2 offset)
        {
            if (material == null)
            {
                throw new ArgumentException("Invalid ProceduralMaterial");
            }
            ScriptingProceduralMaterialInformation materialInformation = this.GetMaterialInformation(material);

            materialInformation.offset = offset;
            this.SetMaterialInformation(material, materialInformation);
        }
        /// <summary>
        /// <para>Force the generation of mipmaps for this ProceduralMaterial.</para>
        /// </summary>
        /// <param name="material"></param>
        /// <param name="mode"></param>
        public void SetGenerateMipMaps(ProceduralMaterial material, bool mode)
        {
            if (material == null)
            {
                throw new ArgumentException("Invalid ProceduralMaterial");
            }
            ScriptingProceduralMaterialInformation materialInformation = this.GetMaterialInformation(material);

            materialInformation.generateMipMaps = mode;
            this.SetMaterialInformation(material, materialInformation);
        }
        /// <summary>
        /// <para>Specify if the ProceduralMaterial needs to force generation of all its outputs.</para>
        /// </summary>
        /// <param name="material"></param>
        /// <param name="generated"></param>
        public void SetGenerateAllOutputs(ProceduralMaterial material, bool generated)
        {
            if (material == null)
            {
                throw new ArgumentException("Invalid ProceduralMaterial");
            }
            ScriptingProceduralMaterialInformation materialInformation = this.GetMaterialInformation(material);

            materialInformation.generateAllOutputs = generated;
            this.SetMaterialInformation(material, materialInformation);
        }
        /// <summary>
        /// <para>Set the ProceduralMaterial animation update rate in millisecond.</para>
        /// </summary>
        /// <param name="material"></param>
        /// <param name="animation_update_rate"></param>
        public void SetAnimationUpdateRate(ProceduralMaterial material, int animation_update_rate)
        {
            if (material == null)
            {
                throw new ArgumentException("Invalid ProceduralMaterial");
            }
            ScriptingProceduralMaterialInformation materialInformation = this.GetMaterialInformation(material);

            materialInformation.animationUpdateRate = animation_update_rate;
            this.SetMaterialInformation(material, materialInformation);
        }
 private void SetMaterialInformation(ProceduralMaterial material, ScriptingProceduralMaterialInformation scriptingProcMatInfo);
 private extern void SetMaterialInformation(ProceduralMaterial material, ScriptingProceduralMaterialInformation scriptingProcMatInfo);