/// <summary> /// Sets a texture request for the material /// </summary> /// <param name="name">The name of the texture property in the shader</param> /// <param name="value">The texture constructor which fetches the texture</param> public void SetTexture(string name, ITextureConstructor value) { if (textureConstructors.ContainsKey(name)) { textureConstructors[name] = value; } else { textureConstructors.Add(name, value); } }
public IEnumerator FetchDependencies_TextureFetchFail_ReturnsFalse() { MaterialConstructor materialConstructor = new MaterialConstructor(); ITextureConstructor fakeTextureConstructorFail = A.Fake <ITextureConstructor>(); A.CallTo(() => fakeTextureConstructorFail.FetchTextureAsync()).Returns(Task.FromResult <Texture2D>(null)); materialConstructor.SetTexture("tex", fakeTextureConstructorFail); Task <bool> task = materialConstructor.FetchDependencies(); yield return(AsyncTest.WaitForTask(task)); bool success = task.Result; Assert.False(success); }
public IEnumerator ConstructMaterial_FetchedTexture_TextureSetInMaterial() { MaterialConstructor materialConstructor = new MaterialConstructor(); Texture2D expectedTexture = new Texture2D(2, 2); ITextureConstructor fakeTextureConstructor = A.Fake <ITextureConstructor>(); A.CallTo(() => fakeTextureConstructor.FetchTextureAsync()).Returns(Task.FromResult(expectedTexture)); materialConstructor.SetTexture("_MainTex", fakeTextureConstructor); Task <bool> task = materialConstructor.FetchDependencies(); yield return(AsyncTest.WaitForTask(task)); bool success = task.Result; Assert.True(success); Material mat = materialConstructor.ConstructMaterial(); Assert.NotNull(mat.mainTexture); Assert.AreEqual(expectedTexture.imageContentsHash, mat.mainTexture.imageContentsHash); }