예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
        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);
            }
        }
예제 #4
0
        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);
            }
        }