public void TestCreateDestroyInstance() { Flex.Library lib = Flex.Init(Flex.FLEX_VERSION, ErrorCallback); Flex.SolverDesc slvDsc = default(Flex.SolverDesc); Flex.SetSolverDescDefaults(ref slvDsc); slvDsc.maxParticles = 1000; Flex.Solver solver = Flex.CreateSolver(lib, ref slvDsc); FlexExt.Container container = FlexExt.CreateContainer(lib, solver, 1000); FlexExt.Asset.Handle asset = CreateTestClothAsset(); FlexExt.ParticleData data = FlexExt.MapParticleData(container); Matrix4x4 transform = Matrix4x4.identity; FlexExt.Instance.Handle instance = FlexExt.CreateInstance(container, ref data, asset, ref transform, 1.0f, 1.0f, 1.0f, Flex.MakePhase(1, Flex.Phase.Default), 1.0f); Assert.AreEqual(asset.asset.numParticles, instance.instance.numParticles); FlexExt.DestroyInstance(container, instance); FlexExt.UnmapParticleData(container); FlexExt.DestroyAsset(asset); FlexExt.DestroyContainer(container); Flex.DestroySolver(solver); Flex.Shutdown(lib); }
public void TestCreateDestroyContainerWithDevice() { Flex.InitDesc desc = new Flex.InitDesc { deviceIndex = -1, enableExtensions = false, #if FLEX_CUDA computeType = Flex.ComputeType.CUDA, #else computeType = Flex.ComputeType.D3D11, #endif renderContext = default(IntPtr), renderDevice = default(IntPtr) }; Flex.Library lib = Flex.Init(Flex.FLEX_VERSION, ErrorCallback, ref desc); Flex.SolverDesc slvDsc = default(Flex.SolverDesc); Flex.SetSolverDescDefaults(ref slvDsc); slvDsc.maxParticles = 1000; Flex.Solver solver = Flex.CreateSolver(lib, ref slvDsc); FlexExt.Container container = FlexExt.CreateContainer(lib, solver, 10000); FlexExt.DestroyContainer(container); Flex.DestroySolver(solver); Flex.Shutdown(lib); }
public void TestCreateDestroyContainer() { Flex.Library lib = Flex.Init(Flex.FLEX_VERSION, ErrorCallback); Flex.SolverDesc slvDsc = default(Flex.SolverDesc); Flex.SetSolverDescDefaults(ref slvDsc); slvDsc.maxParticles = 1000; Flex.Solver solver = Flex.CreateSolver(lib, ref slvDsc); FlexExt.Container container = FlexExt.CreateContainer(lib, solver, 10000); FlexExt.DestroyContainer(container); Flex.DestroySolver(solver); Flex.Shutdown(lib); }
public void TestLockUnlockShapeData() { Flex.Library lib = Flex.Init(Flex.FLEX_VERSION, ErrorCallback); Flex.SolverDesc slvDsc = default(Flex.SolverDesc); Flex.SetSolverDescDefaults(ref slvDsc); slvDsc.maxParticles = 1000; Flex.Solver solver = Flex.CreateSolver(lib, ref slvDsc); FlexExt.Container container = FlexExt.CreateContainer(lib, solver, 1000); FlexExt.ShapeData data = FlexExt.MapShapeData(container); Assert.AreNotEqual(IntPtr.Zero, data.positions); FlexExt.UnmapShapeData(container); FlexExt.DestroyContainer(container); Flex.DestroySolver(solver); Flex.Shutdown(lib); }
void CreateContainer() { AcquireLibrary(); if (sm_libraryHandle) { Flex.SolverDesc desc = default(Flex.SolverDesc); Flex.SetSolverDescDefaults(ref desc); desc.maxParticles = m_maxParticles; desc.maxDiffuseParticles = m_maxDiffuse; desc.maxNeighborsPerParticle = m_maxNeighbors; desc.maxContactsPerParticle = m_maxContacts; m_solverHandle = Flex.CreateSolver(sm_libraryHandle, ref desc); } if (m_solverHandle) { m_containerHandle = FlexExt.CreateContainer(sm_libraryHandle, m_solverHandle, m_maxParticles); } if (m_containerHandle) { m_particleBuffer = new ComputeBuffer(m_maxParticles, 16); m_flexScene = new GameObject("FlexScene").AddComponent <FlexScene>(); m_flexScene.gameObject.hideFlags = HideFlags.DontSave | HideFlags.HideInHierarchy; m_flexScene.container = this; m_flexScene.fixedUpdate += FixedUpdate; m_flexScene.update += Update; m_flexScene.onGUI += OnGUI; GameObject detectShapesObject = new GameObject("FlexDetectShapes"); detectShapesObject.hideFlags = HideFlags.DontSave; detectShapesObject.transform.parent = m_flexScene.transform; detectShapesObject.transform.position = Vector3.up * float.MaxValue; // @@@ detectShapesObject.transform.rotation = Quaternion.identity; m_detectShapesHelper = detectShapesObject.AddComponent <_auxFlexDetectShapes>(); } }
public void TestAllocateFreeParticles() { Flex.Library lib = Flex.Init(Flex.FLEX_VERSION, ErrorCallback); Flex.SolverDesc slvDsc = default(Flex.SolverDesc); Flex.SetSolverDescDefaults(ref slvDsc); slvDsc.maxParticles = 1000; Flex.Solver solver = Flex.CreateSolver(lib, ref slvDsc); FlexExt.Container container = FlexExt.CreateContainer(lib, solver, 1000); int n = 1000; int[] indices = new int[n]; int m = FlexExt.AllocParticles(container, n, ref indices[0]); Assert.AreEqual(n, m); FlexExt.FreeParticles(container, n, ref indices[0]); FlexExt.DestroyContainer(container); Flex.DestroySolver(solver); Flex.Shutdown(lib); }