public IEnumerator CreateBrushMaterial_Destroy_BrushMaterialIsNotPartOfManager() { using (var newBrushMaterial = new ChiselBrushMaterial()) { yield return(null); ChiselBrushMaterialManager.Update(); newBrushMaterial.Dispose(); yield return(null); ChiselBrushMaterialManager.Update(); Assert.False(ChiselBrushMaterialManager.IsRegistered(newBrushMaterial)); } }
public IEnumerator CreateBrushMaterialWithPhysicMaterial_DestroyBrushMaterial_ManagerDoesNotKnowMaterial() { using (var newBrushMaterial = new ChiselBrushMaterial()) { var newPhysicsMaterial = new PhysicMaterial(); newBrushMaterial.PhysicsMaterial = newPhysicsMaterial; newBrushMaterial.Dispose(); yield return(null); ChiselBrushMaterialManager.Update(); LogAssert.Expect(LogType.Error, new Regex("Could not find")); Assert.IsNull(ChiselBrushMaterialManager.GetPhysicsMaterialByInstanceID(newPhysicsMaterial.GetInstanceID(), false)); UnityEngine.Object.DestroyImmediate(newPhysicsMaterial); } }
public IEnumerator CreateTwoBrushMaterialsWithSamePhysicsMaterial_DestroyOneBrushMaterial_ManagerKnowsMaterial() { using (ChiselBrushMaterial newBrushMaterial1 = new ChiselBrushMaterial(), newBrushMaterial2 = new ChiselBrushMaterial()) { var newPhysicsMaterial = new PhysicMaterial(); newBrushMaterial1.PhysicsMaterial = newPhysicsMaterial; newBrushMaterial2.PhysicsMaterial = newPhysicsMaterial; newBrushMaterial1.Dispose(); yield return(null); ChiselBrushMaterialManager.Update(); Assert.AreEqual(newPhysicsMaterial, ChiselBrushMaterialManager.GetPhysicsMaterialByInstanceID(newPhysicsMaterial.GetInstanceID(), false)); Assert.AreEqual(1, ChiselBrushMaterialManager.GetPhysicsMaterialRefCountByInstanceID(newPhysicsMaterial.GetInstanceID())); UnityEngine.Object.DestroyImmediate(newPhysicsMaterial); } }
public IEnumerator CreateTwoBrushMaterialsWithSameRenderMaterial_DestroyOneBrushMaterial_ManagerKnowsMaterial() { using (ChiselBrushMaterial newBrushMaterial1 = ChiselBrushMaterial.CreateInstance(), newBrushMaterial2 = ChiselBrushMaterial.CreateInstance()) { var newRenderMaterial = new Material(Shader.Find("Specular")); newBrushMaterial1.RenderMaterial = newRenderMaterial; newBrushMaterial2.RenderMaterial = newRenderMaterial; newBrushMaterial1.Dispose(); yield return(null); ChiselBrushMaterialManager.Update(); Assert.AreEqual(newRenderMaterial, ChiselBrushMaterialManager.GetRenderMaterialByInstanceID(newRenderMaterial.GetInstanceID(), false)); Assert.AreEqual(1, ChiselBrushMaterialManager.GetRenderMaterialRefCountByInstanceID(newRenderMaterial.GetInstanceID())); UnityEngine.Object.DestroyImmediate(newRenderMaterial); } }
public IEnumerator CreateTwoBrushMaterialsWithSameRenderMaterial_DestroyBothBrushMaterials_ManagerDoesNotKnowMaterial() { using (ChiselBrushMaterial newBrushMaterial1 = new ChiselBrushMaterial(), newBrushMaterial2 = new ChiselBrushMaterial()) { var newRenderMaterial = new Material(Shader.Find("Specular")); newBrushMaterial1.RenderMaterial = newRenderMaterial; newBrushMaterial2.RenderMaterial = newRenderMaterial; newBrushMaterial1.Dispose(); newBrushMaterial2.Dispose(); yield return(null); ChiselBrushMaterialManager.Update(); LogAssert.Expect(LogType.Error, new Regex("Could not find")); Assert.IsNull(ChiselBrushMaterialManager.GetRenderMaterialByInstanceID(newRenderMaterial.GetInstanceID(), false)); UnityEngine.Object.DestroyImmediate(newRenderMaterial); } }
public IEnumerator CreateBrushMaterial_Destroy_BrushMaterialRemovedEventIsCalled() { using (var newBrushMaterial = new ChiselBrushMaterial()) { var newPhysicsMaterial = new PhysicMaterial(); var hasBeenCalled = false; OnBrushMaterialDelegate localDelegate = delegate(ChiselBrushMaterial brushMaterial) { hasBeenCalled = true; }; newBrushMaterial.PhysicsMaterial = null; ChiselBrushMaterialManager.OnBrushMaterialRemoved -= localDelegate; ChiselBrushMaterialManager.OnBrushMaterialRemoved += localDelegate; yield return(null); newBrushMaterial.Dispose(); Assert.IsTrue(hasBeenCalled); ChiselBrushMaterialManager.OnBrushMaterialRemoved -= localDelegate; UnityEngine.Object.DestroyImmediate(newPhysicsMaterial); } }