Example #1
0
        public void reset()
        {
            foreach (RigidBodyObject rbo in _physics_world.rigid_body_objects)
            {
                rbo.body.ClearForces();
                rbo.body.AngularVelocity = Vector3.Zero;
                rbo.body.LinearVelocity  = Vector3.Zero;

                rbo.body.WorldTransform             = rbo.original_transformation;
                rbo.body.MotionState.WorldTransform = rbo.original_transformation;
                rbo.body.Activate();
            }


            OverlappingPairCache       pair_cache = _physics_world.world.Broadphase.OverlappingPairCache;
            AlignedBroadphasePairArray pair_array = pair_cache.OverlappingPairArray;

            for (int i = 0; i < pair_array.Count; i++)
            {
                pair_cache.CleanOverlappingPair(pair_array[i], _physics_world.world.Dispatcher);
            }

            _solver.Reset();
            _physics_world.world.ClearForces();
            _broadphase.ResetPool(_dispatcher);

            _physics_world.paused = false;
        }