private void Awake()
        {
            if (ReferenceEquals(s_Current, null))
            {
                s_Current = this;
            }
            else if (!ReferenceEquals(s_Current, this))
            {
                Destroy(this);
            }

            m_onWorldCallback = new OnWorldUpdateCallback(OnWorldUpdate);
            m_onWorldBodyTransfromUpdateCallback = new OnWorldBodyTransfromUpdateCallback(OnBodyTransformUpdate);

            m_World.SetAsyncUpdate(m_AsyncUpdate);
            m_World.SetFrameRate(1f / Time.fixedDeltaTime);
            m_World.SetThreadsCount(m_NumberOfThreads);
            m_World.SetSolverIterations(m_SolverIterationsCount);
            m_World.SetBroadPhase(m_BroadPhaseType);
            m_World.SetGravity(m_Gravity.x, m_Gravity.y, m_Gravity.z);
            m_World.SetSubSteps(m_SubSteps);
            m_World.SetParallelSolverOnLargeIsland(m_UseParallerSolver);
            m_World.SetDefaultMaterial(m_DefaultRestitution, m_DefaultStaticFriction, m_DefaultKineticFriction, true);
            m_World.SetCallbacks(m_onWorldCallback, m_onWorldBodyTransfromUpdateCallback);

            //Load all physics plug ins and choose the best one
            m_World.SelectPlugin(IntPtr.Zero);
            if (m_UseParallerSolver && (m_PluginsOptions > 0))
            {
                string path = Application.dataPath;
                m_World.LoadPlugins(path);
                int index = 1;
                for (IntPtr plugin = m_World.FirstPlugin(); plugin != IntPtr.Zero; plugin = m_World.NextPlugin(plugin))
                {
                    if (index == m_PluginsOptions)
                    {
                        Debug.Log("Using newton physics solver: " + m_World.GetPluginName(plugin));
                        m_World.SelectPlugin(plugin);
                    }
                    index++;
                }
            }
            else
            {
                m_World.UnloadPlugins();
            }

            InitScene();
        }
예제 #2
0
    void Start()
    {
        m_onWorldCallback = new OnWorldUpdateCallback(OnWorldUpdate);
        m_onWorldBodyTransfromUpdateCallback = new OnWorldBodyTransfromUpdateCallback(OnBodyTransformUpdate);

        m_world.SetAsyncUpdate(m_asyncUpdate);
        m_world.SetFrameRate(m_updateRate);
        m_world.SetThreadsCount(m_numberOfThreads);
        m_world.SetSolverMode(m_solverIterationsCount);
        m_world.SetBroadPhase(m_broadPhaseType);
        m_world.SetGravity(m_gravity.x, m_gravity.y, m_gravity.z);
        m_world.SetSubSteps(m_subSteps);
        m_world.SetDefaultMaterial(m_defaultRestitution, m_defaultStaticFriction, m_defaultKineticFriction, true);
        m_world.SetCallbacks(m_onWorldCallback, m_onWorldBodyTransfromUpdateCallback);
        InitScene();
    }
예제 #3
0
    void Start()
    {
        m_onWorldCallback = new OnWorldUpdateCallback(OnWorldUpdate);
        m_onWorldBodyTransfromUpdateCallback = new OnWorldBodyTransfromUpdateCallback(OnBodyTransformUpdate);

        m_world.SetAsyncUpdate(m_asyncUpdate);
        m_world.SetFrameRate(m_updateRate);
        m_world.SetThreadsCount(m_numberOfThreads);
        m_world.SetSolverIterations(m_solverIterationsCount);
        m_world.SetMaxIterations(m_maxIterations);
        m_world.SetBroadPhase(m_broadPhaseType);
        m_world.SetGravity(m_gravity.x, m_gravity.y, m_gravity.z);
        m_world.SetSubSteps(m_subSteps);
        m_world.SetParallelSolverOnLargeIsland(m_useParallerSolver);
        m_world.SetDefaultMaterial(m_defaultRestitution, m_defaultStaticFriction, m_defaultKineticFriction, true);
        m_world.SetCallbacks(m_onWorldCallback, m_onWorldBodyTransfromUpdateCallback);

        //Load all physics plug ins and choose the best one
        m_world.SelectPlugin(IntPtr.Zero);
        if (m_useParallerSolver && (m_pluginsOptions > 0))
        {
            string path = Application.dataPath;
            m_world.LoadPlugins(path);
            int index = 1;
            for (IntPtr plugin = m_world.FirstPlugin(); plugin != IntPtr.Zero; plugin = m_world.NextPlugin(plugin))
            {
                if (index == m_pluginsOptions)
                {
                    Debug.Log("Using newton physics solver: " + m_world.GetPluginName(plugin));
                    m_world.SelectPlugin(plugin);
                }
                index++;
            }
        }
        else
        {
            m_world.UnloadPlugins();
        }

        InitScene();
    }