From 7c5092f7b1f404723c8cedff64616acf60dd703c Mon Sep 17 00:00:00 2001 From: Viktor Lidholt Date: Tue, 13 Oct 2015 09:39:53 -0700 Subject: [PATCH] Adds support for dampening on weld physics joints in sprites --- packages/flutter_sprites/lib/physics_joint.dart | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/flutter_sprites/lib/physics_joint.dart b/packages/flutter_sprites/lib/physics_joint.dart index 50d938b2155..8b10a4e258c 100644 --- a/packages/flutter_sprites/lib/physics_joint.dart +++ b/packages/flutter_sprites/lib/physics_joint.dart @@ -64,7 +64,7 @@ class PhysicsJointRevolute extends PhysicsJoint { PhysicsJointRevolute( PhysicsBody bodyA, PhysicsBody bodyB, - this.worldAnchor, { + this._worldAnchor, { this.lowerAngle: 0.0, this.upperAngle: 0.0, this.enableLimit: false, @@ -73,7 +73,7 @@ class PhysicsJointRevolute extends PhysicsJoint { _completeCreation(); } - final Point worldAnchor; + final Point _worldAnchor; final double lowerAngle; final double upperAngle; final bool enableLimit; @@ -81,8 +81,8 @@ class PhysicsJointRevolute extends PhysicsJoint { box2d.Joint _createB2Joint(PhysicsNode physicsNode) { // Create Joint Definition Vector2 vecAnchor = new Vector2( - worldAnchor.x / physicsNode.b2WorldToNodeConversionFactor, - worldAnchor.y / physicsNode.b2WorldToNodeConversionFactor + _worldAnchor.x / physicsNode.b2WorldToNodeConversionFactor, + _worldAnchor.y / physicsNode.b2WorldToNodeConversionFactor ); box2d.RevoluteJointDef b2Def = new box2d.RevoluteJointDef(); @@ -120,12 +120,17 @@ class PhysicsJointWeld extends PhysicsJoint { PhysicsJointWeld( PhysicsBody bodyA, PhysicsBody bodyB, { - double breakingForce + double breakingForce, + this.dampening: 0.0, + this.frequency: 0.0 } ) : super(bodyA, bodyB, breakingForce) { _completeCreation(); } + final double dampening; + final double frequency; + box2d.Joint _createB2Joint(PhysicsNode physicsNode) { box2d.WeldJointDef b2Def = new box2d.WeldJointDef(); Vector2 middle = new Vector2( @@ -133,6 +138,8 @@ class PhysicsJointWeld extends PhysicsJoint { (bodyA._body.position.y + bodyB._body.position.y) / 2.0 ); b2Def.initialize(bodyA._body, bodyB._body, middle); + b2Def.dampingRatio = dampening; + b2Def.frequencyHz = frequency; return physicsNode.b2World.createJoint(b2Def); } }