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); }
public void Dispose() { if (!IsDisposed) { Body.DestroyFixture(this); IsDisposed = true; } }
public void Dispose() { if (!IsDisposed) { Body.DestroyFixture(this); IsDisposed = true; GC.SuppressFinalize(this); } }
public void Dispose() { if (!IsDisposed) { Body.DestroyFixture(this); IsDisposed = true; #if !Html5 GC.SuppressFinalize(this); #endif } }
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; }
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]; } }
internal void DestroyFixture(Body body, bool isBodyDisposing) { if (this.fixture == null) return; if (!isBodyDisposing) body.DestroyFixture(this.fixture); this.fixture = null; }