public void SetUp()
        {
            _conf       = new DefaultCollisionConfiguration();
            _dispatcher = new CollisionDispatcher(_conf);
            //_broadphase = new AxisSweep3(new Vector3(-1000, -1000, -1000), new Vector3(1000, 1000, 1000));
            _broadphase = new DbvtBroadphase();
            _world      = new DiscreteDynamicsWorld(_dispatcher, _broadphase, null, _conf);

            _shape   = new BoxShape(2);
            _sphere1 = CreateBody(0, Matrix.Translation(0, 0, 0), _shape);
            _sphere2 = CreateBody(1, Matrix.Translation(0, 1, 0), _shape);

            _callback = new CustomOverlapFilterCallback(_sphere1, _sphere2);
        }
Пример #2
0
        protected override void OnInitializePhysics()
        {
            // collision configuration contains default setup for memory, collision setup
            CollisionConf = new DefaultCollisionConfiguration();
            Dispatcher    = new CollisionDispatcher(CollisionConf);

            Broadphase = new DbvtBroadphase();

            World         = new DiscreteDynamicsWorld(Dispatcher, Broadphase, null, CollisionConf);
            World.Gravity = new Vector3(0, -10, 0);

            CreateGround();
            CreateBoxes();
        }
Пример #3
0
        public void SetUp()
        {
            conf       = new DefaultCollisionConfiguration();
            dispatcher = new CollisionDispatcher(conf);
            broadphase = new AxisSweep3(new Vector3(-1000, -1000, -1000), new Vector3(1000, 1000, 1000));
            world      = new DiscreteDynamicsWorld(dispatcher, broadphase, null, conf);

            action = new Action();
            world.AddAction(action);
            world.AddAction(action);
            world.RemoveAction(action);
            world.RemoveAction(action);
            world.AddAction(action);
        }
Пример #4
0
    //GUIHelperInterface m_guiHelper;

    public CommonMultiBodyBase()
    {
        //m_filterCallback = null;
        m_pairCache              = null;
        m_broadphase             = null;
        m_dispatcher             = null;
        m_solver                 = null;
        m_collisionConfiguration = null;
        m_dynamicsWorld          = null;
        //m_pickedBody = null;
        //m_pickedConstraint = null;
        //m_pickingMultiBodyPoint2Point = null;
        m_prevCanSleep = false;
        //m_guiHelper = null;
    }
Пример #5
0
        public RagdollDemoSimulation()
        {
            CollisionConfiguration = new DefaultCollisionConfiguration();
            Dispatcher             = new CollisionDispatcher(CollisionConfiguration);
            Broadphase             = new AxisSweep3(new Vector3(-10000, -10000, -10000), new Vector3(10000, 10000, 10000));
            World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, null, CollisionConfiguration);

            //World.DispatchInfo.UseConvexConservativeDistanceUtil = true;
            //World.DispatchInfo.ConvexConservativeDistanceThreshold = 0.01f;

            CreateGround();

            SpawnRagdoll(new Vector3(1, 0.5f, 0));
            SpawnRagdoll(new Vector3(-1, 0.5f, 0));
        }
Пример #6
0
        public void SetUp()
        {
            _conf       = new DefaultCollisionConfiguration();
            _dispatcher = new CollisionDispatcher(_conf);
            _broadphase = new DbvtBroadphase();
            _solver     = new SequentialImpulseConstraintSolver();
            _world      = new DiscreteDynamicsWorld(_dispatcher, _broadphase, _solver, _conf);

            _shape = new BoxShape(1);
            using (var bodyInfo = new RigidBodyConstructionInfo(1, null, _shape))
            {
                _body1 = new RigidBody(bodyInfo);
                _body2 = new RigidBody(bodyInfo);
            }
        }
        protected override void OnInitializePhysics()
        {
            // collision configuration contains default setup for memory, collision setup
            CollisionConf = new DefaultCollisionConfiguration();
            Dispatcher    = new CollisionDispatcher(CollisionConf);

            Broadphase = new AxisSweep3(new Vector3(-1000, -1000, -1000), new Vector3(1000, 1000, 1000));
            Solver     = new SequentialImpulseConstraintSolver();

            World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, Solver, CollisionConf);
            World.DispatchInfo.AllowedCcdPenetration = 0.0001f;
            //World.Gravity = Freelook.Up * -10.0f;

            Matrix startTransform = Matrix.Translation(10.210098f, -1.6433364f, 16.453260f);

            ghostObject = new PairCachingGhostObject();
            ghostObject.WorldTransform = startTransform;
            Broadphase.OverlappingPairCache.SetInternalGhostPairCallback(new GhostPairCallback());

            const float characterHeight = 1.75f;
            const float characterWidth  = 1.75f;
            ConvexShape capsule         = new CapsuleShape(characterWidth, characterHeight);

            ghostObject.CollisionShape = capsule;
            ghostObject.CollisionFlags = CollisionFlags.CharacterObject;

            const float stepHeight = 0.35f;

            character = new KinematicCharacterController(ghostObject, capsule, stepHeight);

            BspLoader bspLoader = new BspLoader();

            //string filename = UnityEngine.Application.dataPath + "BuletSharpExamples/Demos/CharacterDemo/data/BspDemo.bsp";
            bspLoader.LoadBspFile(UnityEngine.Application.dataPath + "/BulletSharpExamples/Demos/CharacterDemo/data/BspDemo.bsp");
            BspConverter bsp2Bullet = new BspToBulletConverter(this);

            bsp2Bullet.ConvertBsp(bspLoader, 0.1f);

            World.AddCollisionObject(ghostObject, CollisionFilterGroups.CharacterFilter, CollisionFilterGroups.StaticFilter | CollisionFilterGroups.DefaultFilter);

            World.AddAction(character);

            Vector3 zero = Vector3.Zero;

            convexResultCallback = new ClosestConvexResultCallback(ref zero, ref zero);
            convexResultCallback.CollisionFilterMask = (short)CollisionFilterGroups.StaticFilter;
            cameraSphere = new SphereShape(0.2f);
        }
        protected override void OnInitializePhysics()
        {
            // collision configuration contains default setup for memory, collision setup
            CollisionConf = new DefaultCollisionConfiguration();
            Dispatcher    = new CollisionDispatcher(CollisionConf);

            Broadphase = new AxisSweep3(new Vector3(-1000, -1000, -1000), new Vector3(1000, 1000, 1000));

            World         = new DiscreteDynamicsWorld(Dispatcher, Broadphase, null, CollisionConf);
            World.Gravity = new Vector3(0, -10, 0);

            var groundShape = new BoxShape(30, 1, 30);
            var ground      = LocalCreateRigidBody(0, Matrix.Translation(0, -5, 0), groundShape);

            ground.UserObject = "metal.wav";
            ground            = LocalCreateRigidBody(0, Matrix.Translation(0, 0, 0) * Matrix.RotationZ((float)-Math.PI / 4), groundShape);
            ground.UserObject = "metal.wav";
            var groundShape2 = new BoxShape(5, 1, 30);

            ground            = LocalCreateRigidBody(0, Matrix.Translation(25, -3, 0), groundShape2);
            ground.UserObject = "metal.wav";

            var boxShape = new BoxShape(1, 0.5f, 2);

            for (int i = 0; i < 4; i++)
            {
                var box = LocalCreateRigidBody(1, Matrix.Translation(i * 1.5f, i * 3 + 10, i * 3), boxShape);
                box.UserObject = "metal.wav";
            }

            var sphereShape = new SphereShape(1);

            for (int i = 0; i < 4; i++)
            {
                var sphere = LocalCreateRigidBody(1, Matrix.Translation(i, i * 3 + 20, 0), sphereShape);
                sphere.UserObject = "rubber.wav";
            }

            var cylinderShape = new CylinderShape(0.5f, 1, 0.5f);

            for (int i = 0; i < 4; i++)
            {
                var cylinder = LocalCreateRigidBody(1, Matrix.Translation(i, i * 3 + 20, 3), cylinderShape);
                cylinder.UserObject = "can.wav";
            }

            ManifoldPoint.ContactAdded += ContactAdded;
        }
        public ConcaveRaycastDemoSimulation()
        {
            CollisionConfiguration = new DefaultCollisionConfiguration();
            Dispatcher             = new CollisionDispatcher(CollisionConfiguration);

            Broadphase = new AxisSweep3(_worldMin, _worldMax);

            World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, null, CollisionConfiguration);
            World.SolverInfo.SplitImpulse = 1;

            _raycastBar = new RaycastBar(4000.0f, 0.0f, -1000.0f, 10);
            //_raycastBar = new RaycastBar(true, 40.0f, -50.0f, 50.0f);

            CreateBoxes();
            CreateGround();
        }
Пример #10
0
        public VehicleDemoSimulation()
        {
            CollisionConfiguration = new DefaultCollisionConfiguration();
            Dispatcher             = new CollisionDispatcher(CollisionConfiguration);

            Vector3 worldMin = new Vector3(-10000, -10000, -10000);
            Vector3 worldMax = new Vector3(10000, 10000, 10000);

            Broadphase = new AxisSweep3(worldMin, worldMax);
            //Broadphase = new DbvtBroadphase();

            World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, null, CollisionConfiguration);
            World.SetInternalTickCallback(PickingPreTickCallback, this, true);

            CreateScene();
        }
Пример #11
0
        private void Init()
        {
            var collisionConfiguration = new DefaultCollisionConfiguration();
            var dispatcher             = new CollisionDispatcher(collisionConfiguration);

            GImpactCollisionAlgorithm.RegisterAlgorithm(dispatcher);
            DynamicsWorld = new DiscreteDynamicsWorld(
                dispatcher,
                new DbvtBroadphase(),
                new SequentialImpulseConstraintSolver(),
                collisionConfiguration
                )
            {
                Gravity = Vector3.Zero, // new TGCVector3(0, -10f, 0).ToBulletVector3(),
            };
        }
Пример #12
0
        public static void CreateInstance()
        {
            var CollisionConfiguration = new DefaultCollisionConfiguration();
            var Dispatcher             = new CollisionDispatcher(CollisionConfiguration);
            var Broadphase             = new AxisSweep3(new Vector3(-10000, -10000, -10000), new Vector3(10000, 10000, 10000));
            var World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, null, CollisionConfiguration);

            World.Gravity = new Vector3(0, 0, -9.8f);

            //set debug draw
            World.DebugDrawer           = new PhysicsDebugDraw(new OpenGLDrawContext());
            World.DebugDrawer.DebugMode = DebugDrawModes.All;
            Debug.LogLine("Debug Draw Mode: {0}", World.DebugDrawer.DebugMode.ToString());

            Instance = World;
        }
        public ConcaveConvexCastDemoSimulation()
        {
            CollisionConfiguration = new DefaultCollisionConfiguration();
            Dispatcher             = new CollisionDispatcher(CollisionConfiguration);

            Broadphase = new AxisSweep3(_worldMin, _worldMax);

            World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, null, CollisionConfiguration);
            World.SolverInfo.SplitImpulse = 1;

            _convexcastBatch = new ConvexcastBatch(40.0f, 0.0f, -10.0f, 80.0f);
            _callback        = new ClosestConvexResultCallback();

            CreateGround();
            CreateBoxes();
        }
Пример #14
0
        public override void InitializeDemo()
        {
            //maxiterations = 10;
            SetCameraDistance(100f);
            m_cameraTargetPosition = new IndexedVector3();
            m_cameraPosition       = new IndexedVector3(0, 0, -m_cameraDistance);


            //string filename = @"E:\users\man\bullet\xna-basic-output-1.txt";
            //FileStream filestream = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.Read);
            //BulletGlobals.g_streamWriter = new StreamWriter(filestream);

            ///collision configuration contains default setup for memory, collision setup
            m_collisionConfiguration = new DefaultCollisionConfiguration();

            ///use the default collision dispatcher. For parallel processing you can use a diffent dispatcher (see Extras/BulletMultiThreaded)
            m_dispatcher = new CollisionDispatcher(m_collisionConfiguration);

            //m_broadphase = new DbvtBroadphase();
            IOverlappingPairCache pairCache = null;

            //pairCache = new SortedOverlappingPairCache();

            //m_broadphase = new SimpleBroadphase(1000, pairCache);
            m_broadphase = new DbvtBroadphase();

            IndexedVector3 worldAabbMin = new IndexedVector3(-200, -200, -200);
            IndexedVector3 worldAabbMax = -worldAabbMin;
            //m_broadphase = new AxisSweep3Internal(ref worldAabbMin, ref worldAabbMax, 0xfffe, 0xffff, 16384, null, true);

            ///the default constraint solver. For parallel processing you can use a different solver (see Extras/BulletMultiThreaded)
            SequentialImpulseConstraintSolver sol = new SequentialImpulseConstraintSolver();

            m_constraintSolver = sol;

            m_dynamicsWorld = new DiscreteDynamicsWorld(m_dispatcher, m_broadphase, m_constraintSolver, m_collisionConfiguration);

            IndexedVector3 gravity = new IndexedVector3(0, -10, 0);

            m_dynamicsWorld.SetGravity(ref gravity);

            m_profileManager = new BasicProfileManager();
            BulletGlobals.g_profileManager = m_profileManager;
            m_profileIterator = m_profileManager.getIterator();

            BuildBoard();
        }
Пример #15
0
        public PhysicsEngine()
        {
            collisionConfiguration = new DefaultCollisionConfiguration();
            dispatcher             = new CollisionDispatcher(collisionConfiguration);
            BroadphaseInterface overlappingPairCache = new DbvtBroadphase();

            collisionWorld      = new CollisionWorld(dispatcher, overlappingPairCache, collisionConfiguration);
            listaMisilesEnemigo = new Dictionary <int, CollisionObject>();
            listaMisilesXwing   = new Dictionary <int, CollisionObject>();
            listaTorretas       = new Dictionary <int, Torreta>();
            listaObstaculos     = new Dictionary <int, Obstaculo>();
            listaIdMisilesQueColisionaronConXwing = new List <int>();
            listaColisionesTorretaMisil           = new HashSet <Colision>(new ColisionCompare());
            listaColisionesObstaculoMisil         = new HashSet <Colision>(new ColisionCompare());
            collisionWorld.DebugDrawer            = new Debug_Draw_Bullet();
            collisionWorld.DebugDrawer.DebugMode  = DebugDrawModes.DrawWireframe;
        }
Пример #16
0
        /*
         * void MyContactCallback(object sender, ContactAddedEventArgs e)
         * {
         *  if (e.CollisionObject0Wrapper.CollisionObject.CollisionShape.ShapeType == BroadphaseNativeType.CompoundShape)
         *  {
         *      CompoundShape compound = e.CollisionObject0Wrapper.CollisionObject.CollisionShape as CompoundShape;
         *      CollisionShape childShape = compound.GetChildShape(e.Index0);
         *  }
         *
         *  if (e.CollisionObject1Wrapper.CollisionObject.CollisionShape.ShapeType == BroadphaseNativeType.CompoundShape)
         *  {
         *      CompoundShape compound = e.CollisionObject1Wrapper.CollisionObject.CollisionShape as CompoundShape;
         *      CollisionShape childShape = compound.GetChildShape(e.Index1);
         *  }
         *
         *  e.IsContactModified = true;
         * }
         */

        public void SetupEmptyDynamicsWorld()
        {
            // collision configuration contains default setup for memory, collision setup
            CollisionConf = new DefaultCollisionConfiguration();
            Dispatcher    = new CollisionDispatcher(CollisionConf);
            Broadphase    = new AxisSweep3(new Vector3(-10000, -10000, -10000), new Vector3(10000, 10000, 10000));
            Solver        = new SequentialImpulseConstraintSolver();
            World         = new DiscreteDynamicsWorld(Dispatcher, Broadphase, Solver, CollisionConf);

            // create the ground
            CollisionShape groundShape = new BoxShape(30, 2, 30);

            CollisionShapes.Add(groundShape);
            CollisionObject ground = LocalCreateRigidBody(0, Matrix.Translation(0, -4.5f, 0), groundShape);

            ground.UserObject = "Ground";
        }
Пример #17
0
        protected override void OnInitializePhysics()
        {
            // collision configuration contains default setup for memory, collision setup
            CollisionConf = new DefaultCollisionConfiguration();
            Dispatcher    = new CollisionDispatcher(CollisionConf);

            Broadphase = new AxisSweep3(
                new Vector3(-1000, -1000, -1000),
                new Vector3(1000, 1000, 1000));

            World         = new DiscreteDynamicsWorld(Dispatcher, Broadphase, null, CollisionConf);
            World.Gravity = new Vector3(0, -10, 0);

            renderCallback = new DrawingResult(World);

            var boxA = new BoxShape(1.0f)
            {
                Margin = 0
            };
            var boxB = new BoxShape(0.5f)
            {
                Margin = 0
            };

            CollisionShapes.Add(boxA);
            CollisionShapes.Add(boxB);

            Quaternion rotA = new Quaternion(0.739f, -0.204f, 0.587f, 0.257f);

            rotA.Normalize();

            objectA = new CollisionObject
            {
                CollisionShape = boxA,
                WorldTransform = Matrix.RotationQuaternion(rotA) * Matrix.Translation(0, 3, 0)
            };
            objectB = new CollisionObject
            {
                CollisionShape = boxB,
                WorldTransform = Matrix.Translation(0, 4.248f, 0)
            };

            //World.AddCollisionObject(objectA);
            World.AddCollisionObject(objectB);
        }
Пример #18
0
        internal void Initialize()
        {
            // Build the broadphase
            broadphase = new DbvtBroadphase();

            // Set up the collision configuration and dispatcher
            collisionConfiguration = new DefaultCollisionConfiguration();
            dispatcher             = new CollisionDispatcher(collisionConfiguration);

            // The actual physics solver
            solver = new SequentialImpulseConstraintSolver();

            // The world
            dynamicsWorld = new DiscreteDynamicsWorld(dispatcher, broadphase, solver, collisionConfiguration);
            BulletSharp.Math.Vector3 grav = Gravity;
            dynamicsWorld.SetGravity(ref grav);
            collisionWorld = new CollisionWorld(dispatcher, broadphase, collisionConfiguration);
        }
Пример #19
0
        public MotorDemoSimulation()
        {
            CollisionConfiguration = new DefaultCollisionConfiguration();
            Dispatcher             = new CollisionDispatcher(CollisionConfiguration);

            var worldAabbMin = new Vector3(-10000, -10000, -10000);
            var worldAabbMax = new Vector3(10000, 10000, 10000);

            Broadphase = new AxisSweep3(worldAabbMin, worldAabbMax);

            World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, null, CollisionConfiguration);
            World.SetInternalTickCallback(MotorPreTickCallback, this, true);

            CreateGround();

            SpawnTestRig(new Vector3(1, 0.5f, 0), false);
            SpawnTestRig(new Vector3(-2, 0.5f, 0), true);
        }
Пример #20
0
        public virtual void createEmptyDynamicsWorld()
        {
            ///collision configuration contains default setup for memory, collision setup
            CollisionConf = new DefaultCollisionConfiguration();

            ///use the default collision dispatcher. For parallel processing you can use a diffent dispatcher (see Extras/BulletMultiThreaded)
            Dispatcher = new CollisionDispatcher(CollisionConf);

            m_pairCache = new HashedOverlappingPairCache();

            Broadphase = new DbvtBroadphase(m_pairCache);

            m_solver = new MultiBodyConstraintSolver();

            World = m_dynamicsWorld = new MultiBodyDynamicsWorld(Dispatcher, Broadphase, m_solver, CollisionConf);

            m_dynamicsWorld.Gravity = (new BulletSharp.Math.Vector3(0, -10, 0));
        }
Пример #21
0
        public World()
        {
            CollisionConfiguration collisionConfiguration = new DefaultCollisionConfiguration();
            var collisionDispatcher = new CollisionDispatcher(collisionConfiguration);
            var broadphase          = new DbvtBroadphase();

            _physicsWorld = new DiscreteDynamicsWorld(collisionDispatcher, broadphase, null, collisionConfiguration)
            {
                Gravity = new Vector3(0, -9.81f, 0).ToBullet()
            };
            // Create Ground plane
            var groundShape = new StaticPlaneShape(Vector3.UnitY.ToBullet(), 1);

            _collisionShapes.Add(groundShape);
            CollisionObject ground = AddRigidBody(0, Matrix4.Identity, groundShape);

            ground.UserObject = "Ground";
        }
Пример #22
0
        protected override void OnInitializePhysics()
        {
            // collision configuration contains default setup for memory, collision setup
            CollisionConf = new DefaultCollisionConfiguration();
            Dispatcher    = new CollisionDispatcher(CollisionConf);

            Broadphase = new DbvtBroadphase();
            Solver     = new SequentialImpulseConstraintSolver();

            World         = new DiscreteDynamicsWorld(Dispatcher, Broadphase, Solver, CollisionConf);
            World.Gravity = new Vector3(0, -10, 0);

            importer = new BulletXmlWorldImporter(World);
            if (!importer.LoadFile(Path.Combine("data", "bullet_basic.xml")))
            {
                //throw new FileNotFoundException();
            }
        }
Пример #23
0
        internal void CreateWorld()
        {
            CollisionShapes = new List <CollisionShape>();
            BroadPhase      = new DbvtBroadphase();
            Collisions      = new DefaultCollisionConfiguration();
            Dispatcher      = new CollisionDispatcher(Collisions);
            Solver          = new SequentialImpulseConstraintSolver();
            Objects         = new Dictionary <Entity, RigidBody>();

            World = new DiscreteDynamicsWorld(Dispatcher,
                                              BroadPhase,
                                              Solver,
                                              Collisions)
            {
                Gravity = new Vector3(0.0f, -9.8f, 0.0f)
            };

            Status = EngineStatus.LoadedWorld;
        }
Пример #24
0
        protected override void OnInitializePhysics()
        {
            // collision configuration contains default setup for memory, collision setup
            CollisionConf = new DefaultCollisionConfiguration();
            Dispatcher    = new CollisionDispatcher(CollisionConf);

            Broadphase = new AxisSweep3(new Vector3(-1000, -1000, -1000), new Vector3(1000, 1000, 1000));
            Solver     = new SequentialImpulseConstraintSolver();

            World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, Solver, CollisionConf);
            World.DispatchInfo.AllowedCcdPenetration = 0.0001f;
            //World.Gravity = Freelook.Up * -10.0f;

            Broadphase.OverlappingPairCache.SetInternalGhostPairCallback(new GhostPairCallback());

            const float characterHeight = 1.75f;
            const float characterWidth  = 1.75f;

            _capsuleShape = new CapsuleShape(characterWidth, characterHeight);
            _ghostObject  = new PairCachingGhostObject()
            {
                CollisionShape = _capsuleShape,
                CollisionFlags = CollisionFlags.CharacterObject,
                WorldTransform = Matrix.Translation(10.210098f, -1.6433364f, 16.453260f)
            };
            World.AddCollisionObject(_ghostObject, CollisionFilterGroups.CharacterFilter, CollisionFilterGroups.StaticFilter | CollisionFilterGroups.DefaultFilter);

            const float stepHeight = 0.35f;

            _character = new KinematicCharacterController(_ghostObject, _capsuleShape, stepHeight);
            World.AddAction(_character);

            var bspLoader = new BspLoader();

            bspLoader.LoadBspFile(Path.Combine("data", "BspDemo.bsp"));
            var bsp2Bullet = new BspToBulletConverter(this);

            bsp2Bullet.ConvertBsp(bspLoader, 0.1f);

            _convexResultCallback = new ClosestConvexResultCallback();
            _convexResultCallback.CollisionFilterMask = CollisionFilterGroups.StaticFilter;
            _cameraSphere = new SphereShape(0.2f);
        }
Пример #25
0
        public UrdfDemoSimulation()
        {
            CollisionConfiguration = new DefaultCollisionConfiguration();
            Dispatcher             = new CollisionDispatcher(CollisionConfiguration);
            Broadphase             = new DbvtBroadphase();
            World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, null, CollisionConfiguration);

            CreateGround();

            string[] args = Environment.GetCommandLineArgs();
            if (args.Length == 1)
            {
                LoadUrdf("hinge.urdf");
            }
            else
            {
                LoadUrdf(args[1]);
            }
        }
Пример #26
0
        public void SetUp()
        {
            conf       = new DefaultCollisionConfiguration();
            dispatcher = new CollisionDispatcher(conf);
            broadphase = new AxisSweep3(new Vector3(-1000, -1000, -1000), new Vector3(1000, 1000, 1000));
            world      = new DiscreteDynamicsWorld(dispatcher, broadphase, null, conf);

            broadphase.OverlappingPairUserCallback = new AxisSweepUserCallback();

            boxShape = new BoxShape(1);

            body1 = CreateBody(10.0f, new SphereShape(1.0f), new Vector3(2, 2, 0));
            body2 = CreateBody(1.0f, new SphereShape(1.0f), new Vector3(0, 2, 0));

            ghostObject = new PairCachingGhostObject();
            ghostObject.WorldTransform = Matrix.Translation(-1, 2, 0);
            ghostObject.CollisionShape = boxShape;
            broadphase.OverlappingPairCache.SetInternalGhostPairCallback(new GhostPairCallback());
        }
Пример #27
0
        public Physics()
        {
            // collision configuration contains default setup for memory, collision setup
            CollisionConf = new DefaultCollisionConfiguration();
            Dispatcher    = new CollisionDispatcher(CollisionConf);

            Broadphase = new DbvtBroadphase();
            Solver     = new SequentialImpulseConstraintSolver();

            World         = new DiscreteDynamicsWorld(Dispatcher, Broadphase, Solver, CollisionConf);
            World.Gravity = new Vector3(0, 0, -10);

            BspLoader bspLoader = new BspLoader();

            bspLoader.LoadBspFile("BspDemo.bsp");
            BspConverter bsp2Bullet = new BspToBulletConverter(this);

            bsp2Bullet.ConvertBsp(bspLoader, 0.1f);
        }
Пример #28
0
        protected override void OnInitializePhysics()
        {
            // collision configuration contains default setup for memory, collision setup
            CollisionConf = new DefaultCollisionConfiguration();
            Dispatcher    = new CollisionDispatcher(CollisionConf);

            Vector3 worldMin = new Vector3(-1000, -1000, -1000);
            Vector3 worldMax = new Vector3(1000, 1000, 1000);

            Broadphase = new AxisSweep3(worldMin, worldMax);
            Solver     = new SequentialImpulseConstraintSolver();

            World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, Solver, CollisionConf);
            World.SolverInfo.SplitImpulse = 1;
            World.Gravity      = new Vector3(0, -10, 0);
            IsDebugDrawEnabled = true;


            CollisionShape colShape = new BoxShape(1);

            CollisionShapes.Add(colShape);

            for (int j = 0; j < NumDynamicBoxesX; j++)
            {
                for (int i = 0; i < NumDynamicBoxesY; i++)
                {
                    //CollisionShape colShape = new CapsuleShape(0.5f,2.0f);//boxShape = new SphereShape(1.0f);
                    Matrix startTransform = Matrix.Translation(5 * (i - NumDynamicBoxesX / 2), 10, 5 * (j - NumDynamicBoxesY / 2));
                    LocalCreateRigidBody(1.0f, startTransform, colShape);
                }
            }

            SetVertexPositions(WaveHeight, 0.0f);

            const bool useQuantizedAabbCompression = true;

            groundShape = new BvhTriangleMeshShape(indexVertexArrays, useQuantizedAabbCompression);
            CollisionShapes.Add(groundShape);

            staticBody = LocalCreateRigidBody(0.0f, Matrix.Identity, groundShape);
            staticBody.CollisionFlags |= CollisionFlags.StaticObject;
            staticBody.UserObject      = "Ground";
        }
Пример #29
0
        public Physics()
        {
            CollisionConfiguration collisionConf = new DefaultCollisionConfiguration();
            CollisionDispatcher    dispatcher    = new CollisionDispatcher(collisionConf);

            World         = new DiscreteDynamicsWorld(dispatcher, new DbvtBroadphase(), null, collisionConf);
            World.Gravity = new Vector3(0, -10, 0);

            // create the ground
            CollisionShape  groundShape = new BoxShape(50, 1, 50);
            CollisionObject ground      = LocalCreateRigidBody(0, Matrix.Identity, groundShape);

            ground.UserObject = "Ground";

            // create a box
            CollisionShape boxShape = new BoxShape(1);

            LocalCreateRigidBody(1.0f, Matrix.Translation(0, 20, 0), boxShape);
        }
Пример #30
0
        protected override void OnInitializePhysics()
        {
            // collision configuration contains default setup for memory, collision setup
            CollisionConf = new DefaultCollisionConfiguration();
            Dispatcher    = new CollisionDispatcher(CollisionConf);

            Broadphase = new AxisSweep3(worldMin, worldMax);
            Solver     = new SequentialImpulseConstraintSolver();

            World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, Solver, CollisionConf);
            World.SolverInfo.SplitImpulse = 1;
            World.Gravity = new Vector3(0, -10, 0);

            raycastBar = new RaycastBar(4000.0f, 0.0f, -1000.0f, 10);
            //raycastBar = new RaycastBar(true, 40.0f, -50.0f, 50.0f);

            CreateBoxes();
            CreateGround();
        }