public void TestTransform() { // Define variables and constants ModelInstanceManager mim = new ModelInstanceManager(); ConstantBuffer <Vector4> fsCB = BufferFactory.NewConstantBuffer <Vector4>().WithUsage(ResourceUsage.DiscardWrite); FragmentShader fs = new FragmentShader(@"Tests\SimpleFS.cso", new ConstantBufferBinding(0U, "MaterialProperties", fsCB)); Material testMat = new Material("TestMat", fs); SceneLayer testLayer = Scene.CreateLayer("TestLayer"); ModelInstanceHandle testHandle = mim.AllocateInstance(testMat.Index, 0U, testLayer.Index, Transform.DEFAULT_TRANSFORM); // Set up context // Execute testHandle.Transform = new Transform(Vector3.ONE * 4f, Quaternion.IDENTITY, Vector3.ONE * -15f); // Assert outcome Assert.AreEqual(new Transform(Vector3.ONE * 4f, Quaternion.IDENTITY, Vector3.ONE * -15f), testHandle.Transform); testHandle.Dispose(); testLayer.Dispose(); mim.Dispose(); testMat.Dispose(); fs.Dispose(); fsCB.Dispose(); }
/// <summary> /// Disposes this cache, making it no longer usable, and releasing all resources it created (including vertex/index buffers, /// instance buffers, transform buffers, etc). /// </summary> public void Dispose() { lock (staticMutationLock) { activeCaches.Remove(ID); activeCacheList.Remove(this); } lock (instanceMutationLock) { if (isDisposed) { return; } GC.RemoveMemoryPressure(sizeof(uint) * 2 * (NumModels + 1)); vertexComponentBuffers.ForEach(buffer => buffer.Dispose()); indices.Dispose(); // ReSharper disable ImpureMethodCallOnReadonlyValueField R# bug componentStartPointsAlloc.Dispose(); indexStartPointsAlloc.Dispose(); // ReSharper restore ImpureMethodCallOnReadonlyValueField instanceManager.Dispose(); isDisposed = true; assembledInputLayouts.ForEach(ail => ail.Value.Dispose()); assembledInputLayouts.Clear(); } }