public IEnumerator RemoveAndAddRenderMaterialToAnotherBrushMaterial_MaterialStillRegistered() { using (ChiselBrushMaterial newBrushMaterial1 = new ChiselBrushMaterial(), newBrushMaterial2 = new ChiselBrushMaterial()) { var newRenderMaterial1 = new Material(Shader.Find("Specular")); var newRenderMaterial2 = new Material(Shader.Find("Specular")); newBrushMaterial1.RenderMaterial = newRenderMaterial1; newBrushMaterial2.RenderMaterial = newRenderMaterial2; yield return(null); ChiselBrushMaterialManager.Update(); Assert.AreEqual(newRenderMaterial1, ChiselBrushMaterialManager.GetRenderMaterialByInstanceID(newRenderMaterial1.GetInstanceID(), false)); Assert.AreEqual(newRenderMaterial2, ChiselBrushMaterialManager.GetRenderMaterialByInstanceID(newRenderMaterial2.GetInstanceID(), false)); Assert.AreEqual(1, ChiselBrushMaterialManager.GetRenderMaterialRefCountByInstanceID(newRenderMaterial1.GetInstanceID())); Assert.AreEqual(1, ChiselBrushMaterialManager.GetRenderMaterialRefCountByInstanceID(newRenderMaterial2.GetInstanceID())); newBrushMaterial1.RenderMaterial = newRenderMaterial2; newBrushMaterial2.RenderMaterial = newRenderMaterial1; yield return(null); ChiselBrushMaterialManager.Update(); Assert.AreEqual(newRenderMaterial1, ChiselBrushMaterialManager.GetRenderMaterialByInstanceID(newRenderMaterial1.GetInstanceID(), false)); Assert.AreEqual(newRenderMaterial2, ChiselBrushMaterialManager.GetRenderMaterialByInstanceID(newRenderMaterial2.GetInstanceID(), false)); Assert.AreEqual(1, ChiselBrushMaterialManager.GetRenderMaterialRefCountByInstanceID(newRenderMaterial1.GetInstanceID())); Assert.AreEqual(1, ChiselBrushMaterialManager.GetRenderMaterialRefCountByInstanceID(newRenderMaterial2.GetInstanceID())); UnityEngine.Object.DestroyImmediate(newRenderMaterial1); UnityEngine.Object.DestroyImmediate(newRenderMaterial2); } }
public IEnumerator CreateBrushMaterialWithRenderMaterial_ChangeRenderMaterial_ManagerOnlyKnowsNewMaterial() { using (var newBrushMaterial = new ChiselBrushMaterial()) { var newRenderMaterial1 = new Material(Shader.Find("Specular")); var newRenderMaterial2 = new Material(Shader.Find("Specular")); newBrushMaterial.RenderMaterial = newRenderMaterial1; yield return(null); Assert.AreNotEqual(newRenderMaterial1, newRenderMaterial2); Assert.AreEqual(newRenderMaterial1, ChiselBrushMaterialManager.GetRenderMaterialByInstanceID(newRenderMaterial1.GetInstanceID(), false)); Assert.AreEqual(1, ChiselBrushMaterialManager.GetRenderMaterialRefCountByInstanceID(newRenderMaterial1.GetInstanceID())); LogAssert.Expect(LogType.Error, new Regex("Could not find")); Assert.IsNull(ChiselBrushMaterialManager.GetRenderMaterialByInstanceID(newRenderMaterial2.GetInstanceID(), false)); newBrushMaterial.RenderMaterial = newRenderMaterial2; yield return(null); ChiselBrushMaterialManager.Update(); LogAssert.Expect(LogType.Error, new Regex("Could not find")); Assert.IsNull(ChiselBrushMaterialManager.GetRenderMaterialByInstanceID(newRenderMaterial1.GetInstanceID(), false)); Assert.AreEqual(newRenderMaterial2, ChiselBrushMaterialManager.GetRenderMaterialByInstanceID(newRenderMaterial2.GetInstanceID(), false)); Assert.AreEqual(1, ChiselBrushMaterialManager.GetRenderMaterialRefCountByInstanceID(newRenderMaterial2.GetInstanceID())); UnityEngine.Object.DestroyImmediate(newRenderMaterial1); UnityEngine.Object.DestroyImmediate(newRenderMaterial2); } }
public IEnumerator CreateBrushMaterialWithRenderMaterial_ManagerKnowsMaterial() { using (var newBrushMaterial = new ChiselBrushMaterial()) { var newRenderMaterial = new Material(Shader.Find("Specular")); newBrushMaterial.RenderMaterial = newRenderMaterial; yield return(null); ChiselBrushMaterialManager.Update(); Assert.True(ChiselBrushMaterialManager.IsRegistered(newBrushMaterial)); Assert.AreEqual(newRenderMaterial, ChiselBrushMaterialManager.GetRenderMaterialByInstanceID(newRenderMaterial.GetInstanceID(), false)); Assert.AreEqual(1, ChiselBrushMaterialManager.GetRenderMaterialRefCountByInstanceID(newRenderMaterial.GetInstanceID())); UnityEngine.Object.DestroyImmediate(newRenderMaterial); } }
public IEnumerator CreateTwoBrushMaterialsWithSameRenderMaterial_RefCountIsTwo() { using (ChiselBrushMaterial newBrushMaterial1 = new ChiselBrushMaterial(), newBrushMaterial2 = new ChiselBrushMaterial()) { var newRenderMaterial = new Material(Shader.Find("Specular")); newBrushMaterial1.RenderMaterial = newRenderMaterial; newBrushMaterial2.RenderMaterial = newRenderMaterial; yield return(null); ChiselBrushMaterialManager.Update(); Assert.AreEqual(newRenderMaterial, ChiselBrushMaterialManager.GetRenderMaterialByInstanceID(newRenderMaterial.GetInstanceID(), false)); Assert.AreEqual(2, ChiselBrushMaterialManager.GetRenderMaterialRefCountByInstanceID(newRenderMaterial.GetInstanceID())); UnityEngine.Object.DestroyImmediate(newRenderMaterial); } }