Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
    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);
    }
Ejemplo n.º 3
0
    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);
    }
Ejemplo n.º 4
0
        void DestroyContainer()
        {
            if (m_containerHandle)
            {
                FlexExt.DestroyContainer(m_containerHandle);
                m_containerHandle.Clear();
            }

            if (m_solverHandle)
            {
                Flex.DestroySolver(m_solverHandle);
                m_solverHandle.Clear();
            }

            if (m_drawFluidHelper)
            {
                //DestroyImmediate(m_drawFluidHelper.gameObject);
                m_drawFluidHelper.enabled = false;
                m_drawFluidHelper.gameObject.SetActive(false);
                m_destroyObjects.Add(m_drawFluidHelper.gameObject);
                m_drawFluidHelper = null;
            }

            if (m_detectShapesHelper)
            {
                //DestroyImmediate(m_detectShapesHelper.gameObject);
                m_detectShapesHelper.gameObject.SetActive(false);
                m_destroyObjects.Add(m_detectShapesHelper.gameObject);
                m_detectShapesHelper = null;
            }

            if (m_flexScene)
            {
                m_flexScene.fixedUpdate -= FixedUpdate;
                m_flexScene.update      -= Update;
                m_flexScene.onGUI       -= OnGUI;
                m_flexScene.gameObject.SetActive(false);
                m_destroyObjects.Add(m_flexScene.gameObject);
                m_flexScene = null;
            }

            if (m_particleBuffer != null)
            {
                m_particleBuffer.Release();
            }
            m_particleBuffer = null;

            ReleaseLibrary();
        }
Ejemplo n.º 5
0
    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);
    }
Ejemplo n.º 6
0
    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);
    }