コード例 #1
0
		/// <summary>
		/// this btSimpleDynamicsWorld constructor creates dispatcher, broadphase pairCache and constraintSolver
		/// </summary>
		/// <param name="dispatcher"></param>
		/// <param name="pairCache"></param>
		/// <param name="constraintSolver"></param>
		public SimpleDynamicsWorld(IDispatcher dispatcher, OverlappingPairCache pairCache, IConstraintSolver constraintSolver)
			: base(dispatcher, pairCache)
		{
			_constraintSolver = constraintSolver;
			_ownsConstraintSolver = false;
			_gravity = new Vector3(0, 0, -10);
		}
コード例 #2
0
		///this btDiscreteDynamicsWorld constructor gets created objects from the user, and will not delete those
		public DiscreteDynamicsWorld(IDispatcher dispatcher, IBroadphaseInterface pairCache, IConstraintSolver constraintSolver, ICollisionConfiguration collisionConfiguration)
			: base(dispatcher, pairCache, collisionConfiguration)
		{
			m_ownsIslandManager = true;
			m_constraints = new ObjectArray<TypedConstraint>();
			m_actions = new List<IActionInterface>();
			m_nonStaticRigidBodies = new ObjectArray<RigidBody>();
			m_islandManager = new SimulationIslandManager();
			m_constraintSolver = constraintSolver;

			Gravity = new Vector3(0, -10, 0);
			m_localTime = 1f / 60f;
			m_profileTimings = 0;
			m_synchronizeAllMotionStates = false;

			if (m_constraintSolver == null)
			{
				m_constraintSolver = new SequentialImpulseConstraintSolver();
				m_ownsConstraintSolver = true;
			}
			else
			{
				m_ownsConstraintSolver = false;
			}
		}
コード例 #3
0
        ///this btDiscreteDynamicsWorld constructor gets created objects from the user, and will not delete those
        public DiscreteDynamicsWorld(IDispatcher dispatcher, IBroadphaseInterface pairCache, IConstraintSolver constraintSolver, ICollisionConfiguration collisionConfiguration)
            : base(dispatcher, pairCache, collisionConfiguration)
        {
            m_ownsIslandManager        = true;
            m_constraints              = new ObjectArray <TypedConstraint>();
            m_sortedConstraints        = new ObjectArray <TypedConstraint>();
            m_islandSortPredicate      = new SortConstraintOnIslandPredicate();
            m_islandQuickSortPredicate = new QuickSortConstraintOnIslandPredicate();
            m_actions = new List <IActionInterface>();
            m_nonStaticRigidBodies = new ObjectArray <RigidBody>();
            m_islandManager        = new SimulationIslandManager();
            m_constraintSolver     = constraintSolver;

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

            SetGravity(ref gravity);
            m_localTime                  = 0f;
            m_profileTimings             = 0;
            m_synchronizeAllMotionStates = false;

            if (m_constraintSolver == null)
            {
                m_constraintSolver     = new SequentialImpulseConstraintSolver();
                m_ownsConstraintSolver = true;
            }
            else
            {
                m_ownsConstraintSolver = false;
            }
        }
コード例 #4
0
 /// <summary>
 /// this btSimpleDynamicsWorld constructor creates dispatcher, broadphase pairCache and constraintSolver
 /// </summary>
 /// <param name="dispatcher"></param>
 /// <param name="pairCache"></param>
 /// <param name="constraintSolver"></param>
 public SimpleDynamicsWorld(IDispatcher dispatcher, OverlappingPairCache pairCache, IConstraintSolver constraintSolver)
     : base(dispatcher, pairCache)
 {
     _constraintSolver     = constraintSolver;
     _ownsConstraintSolver = false;
     _gravity = new Vector3(0, 0, -10);
 }
コード例 #5
0
        ///this btSimpleDynamicsWorld constructor creates dispatcher, broadphase pairCache and constraintSolver
        public SimpleDynamicsWorld(IDispatcher dispatcher, IBroadphaseInterface pairCache, IConstraintSolver constraintSolver, ICollisionConfiguration collisionConfiguration)
            : base(dispatcher, pairCache, collisionConfiguration)
        {
            m_constraintSolver     = constraintSolver;
            m_ownsConstraintSolver = false;
            IndexedVector3 gravity = new IndexedVector3(0, 0, -10f);

            SetGravity(ref gravity);
        }
コード例 #6
0
		///this btSimpleDynamicsWorld constructor creates dispatcher, broadphase pairCache and constraintSolver
		public SimpleDynamicsWorld(IDispatcher dispatcher, IBroadphaseInterface pairCache, IConstraintSolver constraintSolver, ICollisionConfiguration collisionConfiguration)
			: base(dispatcher, pairCache, collisionConfiguration)
		{
			m_constraintSolver = constraintSolver;
			m_ownsConstraintSolver = false;
			IndexedVector3 gravity = new IndexedVector3(0, 0, -10f);
			SetGravity(ref gravity);

		}
コード例 #7
0
 public override void SetConstraintSolver(IConstraintSolver solver)
 {
     //if (m_ownsConstraintSolver)
     //{
     //    btAlignedFree( m_constraintSolver);
     //}
     m_ownsConstraintSolver = false;
     m_constraintSolver     = solver;
 }
コード例 #8
0
 public InplaceSolverIslandCallback(
     ContactSolverInfo solverInfo,
     IConstraintSolver solver,
     List <TypedConstraint> sortedConstraints,
     IDebugDraw debugDrawer)
 {
     _solverInfo        = solverInfo;
     _solver            = solver;
     _sortedConstraints = sortedConstraints;
     _debugDrawer       = debugDrawer;
 }
コード例 #9
0
 //this btDiscreteDynamicsWorld constructor gets created objects from the user, and will not delete those
 public DiscreteDynamicsWorld(IDispatcher dispatcher, OverlappingPairCache pairCache, IConstraintSolver constraintSolver)
     : base(dispatcher, pairCache)
 {
     _constraintSolver = constraintSolver != null ? constraintSolver : new SequentialImpulseConstraintSolver();
     _debugDrawer = null;
     _gravity = new Vector3(0, -10, 0);
     _localTime = 1f / 60f;
     _profileTimings = 0;
     _islandManager = new SimulationIslandManager();
     _ownsIslandManager = true;
     _ownsConstraintSolver = constraintSolver == null;
 }
コード例 #10
0
 //this btDiscreteDynamicsWorld constructor gets created objects from the user, and will not delete those
 public DiscreteDynamicsWorld(IDispatcher dispatcher, OverlappingPairCache pairCache, IConstraintSolver constraintSolver)
     : base(dispatcher, pairCache)
 {
     _constraintSolver     = constraintSolver != null ? constraintSolver : new SequentialImpulseConstraintSolver();
     _debugDrawer          = null;
     _gravity              = new Vector3(0, -10, 0);
     _localTime            = 1f / 60f;
     _profileTimings       = 0;
     _islandManager        = new SimulationIslandManager();
     _ownsIslandManager    = true;
     _ownsConstraintSolver = constraintSolver == null;
 }
コード例 #11
0
        private void InitializeExample()
        {
            history.Clear();
            historyIndex = 0;

            system = examples[exampleIndex].Initialize(Display.RenderTarget.Size);

            solver     = solvers[solverIndex](system);
            kinematics = new KinematicsIntegrator(system, solver);
            kinematics.MinimumTimeStep = TimeStep;
            kinematics.MaximumTimeStep = TimeStep;

            StoreHistory();
        }
コード例 #12
0
		public InplaceSolverIslandCallback(
			ContactSolverInfo solverInfo,
			IConstraintSolver solver,
			ObjectArray<TypedConstraint> sortedConstraints,
			int numConstraints,
			IDebugDraw debugDrawer,
			IDispatcher dispatcher)
		{
			m_solverInfo = solverInfo;
			m_solver = solver;
			m_sortedConstraints = sortedConstraints;
			m_numConstraints = numConstraints;
			m_debugDrawer = debugDrawer;
			m_dispatcher = dispatcher;
			m_bodies = new ObjectArray<CollisionObject>();
			m_manifolds = new ObjectArray<PersistentManifold>();
			m_constraints = new ObjectArray<TypedConstraint>();
		}
コード例 #13
0
 public InplaceSolverIslandCallback(
     ContactSolverInfo solverInfo,
     IConstraintSolver solver,
     ObjectArray <TypedConstraint> sortedConstraints,
     int numConstraints,
     IDebugDraw debugDrawer,
     IDispatcher dispatcher)
 {
     m_solverInfo        = solverInfo;
     m_solver            = solver;
     m_sortedConstraints = sortedConstraints;
     m_numConstraints    = numConstraints;
     m_debugDrawer       = debugDrawer;
     m_dispatcher        = dispatcher;
     m_bodies            = new ObjectArray <CollisionObject>();
     m_manifolds         = new PersistentManifoldArray();
     m_constraints       = new ObjectArray <TypedConstraint>();
 }
コード例 #14
0
        /// <summary>
        /// 物理ワールドの初期化
        /// </summary>
        public void init(CollisionDispatcher d, IBroadphaseInterface b, IConstraintSolver s, ICollisionConfiguration c)
        {
            // Construct physics objects
            CoreDescription coreDesc = new CoreDescription();
            UserOutput      output   = new UserOutput();

            this.Core = new Core(coreDesc, output);

            Core core = this.Core;

            // デバッグ描画用の設定
            core.SetParameter(PhysicsParameter.VisualizationScale, 2.0f);
            core.SetParameter(PhysicsParameter.VisualizeForceFields, true);
            core.SetParameter(PhysicsParameter.VisualizeCollisionShapes, true);
            core.SetParameter(PhysicsParameter.VisualizeJointLimits, true);

            /*
             * core.SetParameter(PhysicsParameter.VisualizeJointLocalAxes, true);
             * //core.SetParameter(PhysicsParameter.VisualizeJointWorldAxes, true);
             *          core.SetParameter(PhysicsParameter.VisualizeClothMesh, true);
             *          core.SetParameter(PhysicsParameter.VisualizeFluidPosition, true);
             *          core.SetParameter(PhysicsParameter.VisualizeFluidEmitters, false); // Slows down rendering a bit too much
             *          core.SetParameter(PhysicsParameter.VisualizeSoftBodyMesh, true);
             */

            // シーンの設定
            SceneDescription sceneDesc = new SceneDescription()
            {
                //SimulationType = SimulationType.Hardware,
                Gravity            = new Vector3(0, -9.81f, 0),
                GroundPlaneEnabled = true
            };

            this.scene = core.CreateScene(sceneDesc);

            HardwareVersion ver     = Core.HardwareVersion;
            SimulationType  simType = this.scene.SimulationType;

            // Connect to the remote debugger if it's there
            //core.Foundation.RemoteDebugger.Connect("localhost");
        }
コード例 #15
0
 public override void SetConstraintSolver(IConstraintSolver solver)
 {
     m_ownsConstraintSolver = false;
     m_constraintSolver     = solver;
 }
コード例 #16
0
		public override void SetConstraintSolver(IConstraintSolver solver)
		{
			m_ownsConstraintSolver = false;
			m_constraintSolver = solver;

		}
コード例 #17
0
 public ContinuousDynamicsWorld(IDispatcher dispatcher, IBroadphaseInterface pairCache, IConstraintSolver constraintSolver, ICollisionConfiguration collisionConfiguration)
     : base(dispatcher, pairCache, constraintSolver, collisionConfiguration)
 {
 }
コード例 #18
0
        public BulletXNAPhysicsComponent(Game game, ICollisionConfiguration collisionConf, IConstraintSolver solver, Vector3 gravity)
            : base(game)
        {
            CollisionDispatcher Dispatcher = new CollisionDispatcher(collisionConf);

            IndexedVector3       worldMin   = new IndexedVector3(-1000, -1000, -1000);
            IndexedVector3       worldMax   = -worldMin;
            IBroadphaseInterface broadphase = new AxisSweep3Internal(ref worldMin, ref worldMax, 0xfffe, 0xffff, 16384, null, false);

            //broadphase = new DbvtBroadphase();


            World = new DiscreteDynamicsWorld(Dispatcher, broadphase, solver, collisionConf);
            IndexedVector3 iv3Gravity = new IndexedVector3(gravity.X, gravity.Y, gravity.Z);

            World.SetGravity(ref iv3Gravity);
        }
コード例 #19
0
		public abstract  void	SetConstraintSolver(IConstraintSolver solver);
コード例 #20
0
        public KinematicsIntegrator(KinematicsSystem system, IConstraintSolver constraint)
        {
            System = system;

            this.constraint = constraint;
        }
コード例 #21
0
		public override void SetConstraintSolver(IConstraintSolver solver)
		{
			//if (m_ownsConstraintSolver)
			//{
			//    btAlignedFree( m_constraintSolver);
			//}
			m_ownsConstraintSolver = false;
			m_constraintSolver = solver;
		}
コード例 #22
0
 public InplaceSolverIslandCallback(
     ContactSolverInfo solverInfo,
     IConstraintSolver solver,
     List<TypedConstraint> sortedConstraints,
     IDebugDraw debugDrawer)
 {
     _solverInfo = solverInfo;
     _solver = solver;
     _sortedConstraints = sortedConstraints;
     _debugDrawer = debugDrawer;
 }
コード例 #23
0
 public abstract void   SetConstraintSolver(IConstraintSolver solver);