Beispiel #1
0
        public void Destroy()
        {
            dynamicsWorld.Dispose();
            solver.Dispose();
            overlappingPairCache.Dispose();
            dispatcher.Dispose();
            collisionConfiguration.Dispose();
            foreach (RigidBody rb in this.bodies)
            {
                rb.Dispose();
            }
            foreach (SoftBody sb in this.softbodies)
            {
                sb.Dispose();
            }
            foreach (TypedConstraint tc in this.constraints)
            {
                tc.Dispose();
            }

            this.bodies.Clear();
            this.softbodies.Clear();
            this.constraints.Clear();
            this.created = false;
        }
 /// <summary>
 /// リソースを開放する
 /// </summary>
 public void Dispose()
 {
     solver.Dispose();
     overlappingPairCache.Dispose();
     dispatcher.Dispose();
     collisionConfiguration.Dispose();
 }
Beispiel #3
0
        public void Dispose()
        {
            #region Dispose Rigid bodies
            Rock1Body.Dispose();
            Rock2Body.Dispose();
            Rock3Body.Dispose();
            Rock4Body.Dispose();
            Rock5Body.Dispose();
            BandicootRigidBody.Dispose();
            DynamicPlatform1Body.Dispose();
            DynamicPlatform2Body.Dispose();
            DynamicPlatform3Body.Dispose();
            #endregion

            #region Dispose Meshes
            Rock1Mesh.Dispose();
            Rock2Mesh.Dispose();
            Rock3Mesh.Dispose();
            Rock4Mesh.Dispose();
            Rock5Mesh.Dispose();
            DynamicPlatform1Mesh.Dispose();
            DynamicPlatform2Mesh.Dispose();
            DynamicPlatform3Mesh.Dispose();
            #endregion

            #region Dispose Physics world
            dynamicsWorld.Dispose();
            dispatcher.Dispose();
            collisionConfiguration.Dispose();
            constraintSolver.Dispose();
            overlappingPairCache.Dispose();
            #endregion
        }
Beispiel #4
0
 public void TearDown()
 {
     world.Dispose();
     dispatcher.Dispose();
     broadphase.Dispose();
     conf.Dispose();
 }
Beispiel #5
0
        public void Dispose()
        {
            if (_isDisposed)
            {
                return;
            }

            if (World != null)
            {
                AlignedCollisionObjectArray objectArray = World.CollisionObjectArray;
                while (objectArray.Count != 0)
                {
                    int             objectIndex     = objectArray.Count - 1;
                    CollisionObject collisionObject = objectArray[objectIndex];
                    objectArray.RemoveAt(objectIndex);
                    collisionObject.Dispose();
                }

                World.Dispose();
                _dispatcher.Dispose();
                Broadphase.Dispose();
                _conf.Dispose();
            }

            _isDisposed = true;
        }
 public void TearDown()
 {
     _world.Dispose();
     _solver.Dispose();
     _broadphase.Dispose();
     _dispatcher.Dispose();
     _conf.Dispose();
 }
Beispiel #7
0
 public void Dispose()
 {
     dynamicsWorld.Dispose();
     dispatcher.Dispose();
     collisionConfiguration.Dispose();
     constraintSolver.Dispose();
     overlappingPairCache.Dispose();
 }
 public void Dispose()
 {
     //Se hace dispose del modelo fisico.
     dynamicsWorld.Dispose();
     dispatcher.Dispose();
     collisionConfiguration.Dispose();
     constraintSolver.Dispose();
     overlappingPairCache.Dispose();
     piso.Dispose();
 }
        public void TearDown()
        {
            _world.Dispose();
            _dispatcher.Dispose();
            _broadphase.Dispose();
            _conf.Dispose();

            _callback.Dispose();

            _shape.Dispose();
            _sphere1.Dispose();
            _sphere2.Dispose();
        }
Beispiel #10
0
        public void Dispose()
        {
            #region dispose
            dynamicsWorld.Dispose();
            dispatcher.Dispose();
            collisionConfiguration.Dispose();
            constraintSolver.Dispose();
            overlappingPairCache.Dispose();

            bulletObjects.ForEach(b => b.Dispose());
            //floorMesh.Dispose();
            #endregion
        }
        public void Dispose()
        {
            foreach (TGCBox stair in stairsMesh)
            {
                stair.Dispose();
            }

            sphereMesh.Dispose();
            dynamicsWorld.Dispose();
            dispatcher.Dispose();
            collisionConfiguration.Dispose();
            constraintSolver.Dispose();
            overlappingPairCache.Dispose();
        }
Beispiel #12
0
        public void Dispose()
        {
            dynamicsWorld.Dispose();
            dispatcher.Dispose();
            collisionConfiguration.Dispose();
            constraintSolver.Dispose();
            overlappingPairCache.Dispose();
            boxBody.Dispose();
            ballBody.Dispose();
            floorBody.Dispose();

            boxMesh.Dispose();
            sphereMesh.Dispose();

            floorMesh.Dispose();
        }
Beispiel #13
0
        public void TearDown()
        {
            world.RemoveRigidBody(body1);
            world.RemoveRigidBody(body2);
            boxShape.Dispose();
            body1.MotionState.Dispose();
            body2.MotionState.Dispose();
            body1.Dispose();
            body2.Dispose();
            ghostObject.Dispose();

            world.Dispose();
            dispatcher.Dispose();
            broadphase.Dispose();
            conf.Dispose();
        }
        //Dispose of components and clean up
        public override void Dispose()
        {
            if (_disposing)
            {
                return;
            }

            //Unregister all registered rigidbodies
            foreach (var rb in _bulletRigidBodies)
            {
                _dynamicsWorld.RemoveRigidBody(rb);
            }

            //Find all constraints and tell them to dispose
            var constraints = (BulletConstraint[])Object.FindObjectsOfType(typeof(BulletConstraint));

            if (constraints.Length == 0)
            {
                return;
            }
            foreach (var tc in constraints)
            {
                tc.Dispose();
            }

            //Find all Bullet rigidbody instances and tell them to dispose
            var rigidBodies = (BulletRigidBody[])Object.FindObjectsOfType(typeof(BulletRigidBody));

            if (rigidBodies.Length == 0)
            {
                return;
            }
            foreach (var rb in rigidBodies)
            {
                rb.Dispose();
            }

            //Dispose of the physics world components in reverse order
            _disposing = true;
            _dynamicsWorld.Dispose();
            _constraintSolver?.Dispose();
            _broadphaseInterface.Dispose();
            _collisionDispatcher.Dispose();
            _collisionConfig.Dispose();
            _bulletBehaviors.Clear();
            _threadedSolver?.Dispose();
        }
Beispiel #15
0
        public void TearDown()
        {
            world.RemoveRigidBody(gImpactMesh);
            world.RemoveRigidBody(triangleMesh);
            gImpactMesh.MotionState.Dispose();
            triangleMesh.MotionState.Dispose();
            gImpactMesh.Dispose();
            triangleMesh.Dispose();
            gImpactMeshShape.Dispose();
            triangleMeshShape.Dispose();
            indexVertexArray.Dispose();
            indexVertexArray2.Dispose();

            world.Dispose();
            dispatcher.Dispose();
            broadphase.Dispose();
            conf.Dispose();
        }
Beispiel #16
0
        public void TearDown()
        {
            world.RemoveRigidBody(compound);
            compound.MotionState.Dispose();
            ground.Dispose();
            groundShape.Dispose();
            compound.Dispose();
            boxShape.Dispose();
            boxShape2.Dispose();
            boxShape3.Dispose();
            compoundShape.Dispose();
            compoundShape2.Dispose();

            world.Dispose();
            dispatcher.Dispose();
            broadphase.Dispose();
            conf.Dispose();
        }
Beispiel #17
0
        public void Dispose()
        {
            //Se hace dispose del modelo fisico.
            dynamicsWorld.Dispose();
            dispatcher.Dispose();
            collisionConfiguration.Dispose();
            constraintSolver.Dispose();
            overlappingPairCache.Dispose();
            hummerBody.Dispose();
            floorBody.Dispose();

            //Dispose de Meshes
            foreach (TgcMesh mesh in meshes)
            {
                mesh.Dispose();
            }

            hummer.Dispose();
        }
        public void TearDown()
        {
            world.RemoveRigidBody(body1);
            world.RemoveRigidBody(body2);
            body1.CollisionShape.Dispose();
            body2.CollisionShape.Dispose();
            body1.MotionState.Dispose();
            body2.MotionState.Dispose();
            body1.Dispose();
            body2.Dispose();

            broadphase.OverlappingPairUserCallback.Dispose();
            broadphase.OverlappingPairUserCallback = null;

            world.Dispose();
            dispatcher.Dispose();
            broadphase.Dispose();
            conf.Dispose();
        }
Beispiel #19
0
        public void Destroy()
        {
            this.dynamicsWorld.DeleteAndDisposeAllConstraints();

            this.dynamicsWorld.DeleteAndDisposeAllRigidBodies();

            dynamicsWorld.Dispose();
            solver.Dispose();
            overlappingPairCache.Dispose();
            dispatcher.Dispose();
            collisionConfiguration.Dispose();

            this.bodyContainer.Clear();
            this.constraintContainer.Clear();



            this.created = false;
        }
Beispiel #20
0
        public void Dispose()
        {
            //Dispose de los meshes.
            sphereMesh.Dispose();
            personaje.Dispose();
            boxMesh.Dispose();
            boxMeshB.Dispose();
            plataforma.Dispose();
            foreach (RigidBody peldanio in escalonesRigidBodies)
            {
                escalon.Dispose();
            }

            //Se hace dispose del modelo fisico.
            dynamicsWorld.Dispose();
            dispatcher.Dispose();
            collisionConfiguration.Dispose();
            constraintSolver.Dispose();
            overlappingPairCache.Dispose();
        }
Beispiel #21
0
        public void Dispose()
        {
            world.Dispose();
            dispatcher.Dispose();
            collisionConfiguration.Dispose();
            constraintSolver.Dispose();
            broadphase.Dispose();

            player1.Dispose();
            escenario.Dispose();
            skyBox.Dispose();
            enemy.Dispose();

            items.ForEach(item => item.Dispose());
            bullets.ForEach(bullet => bullet.Dispose());
            objetos.ForEach(obj => obj.Dispose());
            explosions.ForEach(ex => ex.Dispose());

            explosionFX.Dispose();
            toonFX.Dispose();
        }
Beispiel #22
0
        public void Drop()
        {
            if (simThread != null)
            {
                simThread.Join();
            }

            for (int i = bulletWorld.NumConstraints - 1; i >= 0; i--)
            {
                TypedConstraint c = bulletWorld.GetConstraint(i);
                bulletWorld.RemoveConstraint(c);
                c.Dispose();
            }

            for (int i = bulletWorld.NumCollisionObjects - 1; i >= 0; i--)
            {
                CollisionObject o = bulletWorld.CollisionObjectArray[i];

                RigidBody b = o as RigidBody;
                if (b != null && b.MotionState != null)
                {
                    b.MotionState.Dispose();
                }

                bulletWorld.RemoveCollisionObject(o);
                o.Dispose();
            }

            foreach (CollisionShape s in bulletShapes)
            {
                s.Dispose();
            }
            bulletShapes.Clear();

            bulletWorld.Dispose();
            bulletBroadphase.Dispose();
            bulletCollisionDispatcher.Dispose();
            bulletCollisionConfiguration.Dispose();
        }
Beispiel #23
0
        public void Destroy()
        {
            this.dynamicsWorld.DeleteAndDisposeAllConstraints();

            //this.dynamicsWorld.DeleteAndDisposeAllRigidBodies();

            for (int i = 0; i < this.dynamicsWorld.NumCollisionObjects; i++)
            {
                CollisionObject obj = dynamicsWorld.CollisionObjectArray[i];

                if (obj is RigidBody)
                {
                    RigidBody body = obj as RigidBody;
                    dynamicsWorld.DeleteAndDisposeBody(body);
                }
                else if (obj is SoftBody)
                {
                    SoftBody body = obj as SoftBody;
                    dynamicsWorld.RemoveSoftBody(body);
                    body.Dispose();
                    body.CollisionShape.Dispose();
                    body.Tag = null;
                }
            }

            dynamicsWorld.Dispose();
            solver.Dispose();
            overlappingPairCache.Dispose();
            dispatcher.Dispose();
            collisionConfiguration.Dispose();



            this.bodyContainer.Clear();
            this.softBodyContainer.Clear();
            this.constraintContainer.Clear();
            this.created = false;
        }
Beispiel #24
0
 public void TearDown()
 {
     conf.Dispose();
 }
Beispiel #25
0
 public void Dispose()
 {
     collisionWorld.Dispose();
     dispatcher.Dispose();
     collisionConfiguration.Dispose();
 }
Beispiel #26
0
    public virtual void exitPhysics()
    {
        removePickingConstraint();
        //cleanup in the reverse order of creation/initialization

        //remove the rigidbodies from the dynamics world and delete them

        if (m_dynamicsWorld == null)
        {
            int i;
            for (i = m_dynamicsWorld.NumConstraints - 1; i >= 0; i--)
            {
                m_dynamicsWorld.RemoveConstraint(m_dynamicsWorld.GetConstraint(i));
            }

            for (i = m_dynamicsWorld.NumMultiBodyConstraints - 1; i >= 0; i--)
            {
                MultiBodyConstraint mbc = m_dynamicsWorld.GetMultiBodyConstraint(i);
                m_dynamicsWorld.RemoveMultiBodyConstraint(mbc);
                mbc.Dispose();
            }

            for (i = m_dynamicsWorld.NumMultibodies - 1; i >= 0; i--)
            {
                MultiBody mb = m_dynamicsWorld.GetMultiBody(i);
                m_dynamicsWorld.RemoveMultiBody(mb);
                mb.Dispose();
            }
            for (i = m_dynamicsWorld.NumCollisionObjects - 1; i >= 0; i--)
            {
                CollisionObject obj  = m_dynamicsWorld.CollisionObjectArray[i];
                RigidBody       body = RigidBody.Upcast(obj);
                if (body != null && body.MotionState != null)
                {
                    body.MotionState.Dispose();
                }
                m_dynamicsWorld.RemoveCollisionObject(obj);
                obj.Dispose();
            }
        }
        //delete collision shapes
        for (int j = 0; j < m_collisionShapes.Count; j++)
        {
            CollisionObject shape = m_collisionShapes[j];
            shape.Dispose();
        }
        m_collisionShapes.Clear();

        m_dynamicsWorld.Dispose();
        m_dynamicsWorld = null;

        m_solver.Dispose();
        m_solver = null;

        m_broadphase.Dispose();
        m_broadphase = null;

        m_dispatcher.Dispose();
        m_dispatcher = null;

        m_pairCache.Dispose();
        m_pairCache = null;

        //m_filterCallback.Dispose();
        //m_filterCallback = null;

        m_collisionConfiguration.Dispose();
        m_collisionConfiguration = null;
    }
Beispiel #27
0
    private void Start()
    {
        //Create a World
        Debug.Log("Initialize physics");
        List <CollisionShape> CollisionShapes = new List <CollisionShape>();

        DefaultCollisionConfiguration CollisionConf = new DefaultCollisionConfiguration();
        CollisionDispatcher           Dispatcher    = new CollisionDispatcher(CollisionConf);

        DbvtBroadphase Broadphase = new DbvtBroadphase();

        DiscreteDynamicsWorld World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, null, CollisionConf)
        {
            Gravity = new BulletSharp.Math.Vector3(0, -9.80665f, 0)
        };

        // create a few dynamic rigidbodies
        const float mass = 1.0f;

        //Add a single cube
        RigidBody fallRigidBody;
        BoxShape  shape = new BoxShape(1f, 1f, 1f);

        BulletSharp.Math.Vector3 localInertia = BulletSharp.Math.Vector3.Zero;
        shape.CalculateLocalInertia(mass, out localInertia);

        RigidBodyConstructionInfo rbInfo = new RigidBodyConstructionInfo(mass, null, shape, localInertia);

        fallRigidBody = new RigidBody(rbInfo);
        rbInfo.Dispose();

        Matrix st = Matrix.Translation(new BulletSharp.Math.Vector3(0f, 10f, 0f));

        fallRigidBody.WorldTransform = st;

        World.AddRigidBody(fallRigidBody);

        Matrix trans;

        //Step the simulation 300 steps
        for (int i = 0; i < 300; i++)
        {
            World.StepSimulation(1f / 60f, 10);

            fallRigidBody.GetWorldTransform(out trans);

            Debug.Log("box height: " + trans.Origin);
        }

        //Clean up.
        World.RemoveRigidBody(fallRigidBody);
        fallRigidBody.Dispose();

        Debug.Log("ExitPhysics");

        if (World != null)
        {
            //remove/dispose constraints
            int i;

            for (i = World.NumConstraints - 1; i >= 0; i--)
            {
                TypedConstraint constraint = World.GetConstraint(i);
                World.RemoveConstraint(constraint);
                constraint.Dispose();
            }

            //remove the rigidbodies from the dynamics world and delete them
            for (i = World.NumCollisionObjects - 1; i >= 0; i--)
            {
                CollisionObject obj  = World.CollisionObjectArray[i];
                RigidBody       body = obj as RigidBody;

                if (body != null && body.MotionState != null)
                {
                    body.MotionState.Dispose();
                }

                World.RemoveCollisionObject(obj);
                obj.Dispose();
            }

            //delete collision shapes
            foreach (CollisionShape ss in CollisionShapes)
            {
                ss.Dispose();
            }

            CollisionShapes.Clear();

            World.Dispose();
            Broadphase.Dispose();
            Dispatcher.Dispose();
            CollisionConf.Dispose();
        }

        if (Broadphase != null)
        {
            Broadphase.Dispose();
        }

        if (Dispatcher != null)
        {
            Dispatcher.Dispose();
        }

        if (CollisionConf != null)
        {
            CollisionConf.Dispose();
        }
    }