Ejemplo n.º 1
0
        private void Decompose()
        {
            //Unsubsribe from the PostSolve delegate
            _world.ContactManager.PostSolve -= PostSolve;

            for (int i = 0; i < Parts.Count; i++)
            {
                Fixture oldFixture = Parts[i];

                Shape  shape    = oldFixture.Shape.Clone();
                object userData = oldFixture.UserData;

                MainBody.DestroyFixture(oldFixture);

                Body body = BodyFactory.CreateBody(_world);
                body.BodyType = BodyType.Dynamic;
                body.Position = MainBody.Position;
                body.Rotation = MainBody.Rotation;
                body.UserData = MainBody.UserData;

                Fixture newFixture = body.CreateFixture(shape);
                newFixture.UserData = userData;
                Parts[i]            = newFixture;

                body.AngularVelocity = _angularVelocitiesCache[i];
                body.LinearVelocity  = _velocitiesCache[i];
            }

            _world.RemoveBody(MainBody);
            _world.RemoveBreakableBody(this);
        }
Ejemplo n.º 2
0
 public void Dispose()
 {
     if (!IsDisposed)
     {
         Body.DestroyFixture(this);
         IsDisposed = true;
     }
 }
Ejemplo n.º 3
0
 public void Dispose()
 {
     if (!IsDisposed)
     {
         Body.DestroyFixture(this);
         IsDisposed = true;
         GC.SuppressFinalize(this);
     }
 }
Ejemplo n.º 4
0
        public void Dispose()
        {
            if (!IsDisposed)
            {
                Body.DestroyFixture(this);
                IsDisposed = true;
#if !Html5
                GC.SuppressFinalize(this);
#endif
            }
        }
Ejemplo n.º 5
0
    protected void SetupPhysics()
    {
        if(body == null) {
            body = GetComponent<FSBodyComponent>().PhysicsBody;
            shape = GetComponent<FSShapeComponent>().GetShape();
            shape.Radius = minRadius;

            body.DestroyFixture(body.FixtureList[0]);
            body.CreateFixture(shape);
            CollisionPresets.SetFixtureCollision(body.FixtureList[0], collisionSetting);

            expansionRate = (maxRadius - minRadius) / expansionTime;
            gameObject.transform.localScale = new Vector3(2*minRadius, 2*minRadius, 1.0f);
        }
        body.IsSensor = true;
        body.GravityScale = 0.0f; //Explosions aren't affected by gravity
        body.OnCollision += OnCollisionEvent;
    }
Ejemplo n.º 6
0
        private void Decompose()
        {
            for (int i = 0; i < Parts.Count; i++)
            {
                Fixture fixture = Parts[i];

                //Unsubsribe from the PostSolve delegate
                fixture.PostSolve -= PostSolve;

                Shape shape = fixture.Shape.Clone();

                MainBody.DestroyFixture(fixture);

                Body body = BodyFactory.CreateBody(_world);
                body.BodyType = BodyType.Dynamic;
                body.Position = MainBody.Position;
                body.Rotation = MainBody.Rotation;

                body.CreateFixture(shape, fixture.Density);

                body.AngularVelocity = _angularVelocitiesCache[i];
                body.LinearVelocity  = _velocitiesCache[i];
            }
        }
Ejemplo n.º 7
0
		internal void DestroyFixture(Body body, bool isBodyDisposing)
		{
			if (this.fixture == null) return;
			if (!isBodyDisposing)
				body.DestroyFixture(this.fixture);
			this.fixture = null;
		}