anchor.diff:      PhysicsBody bodyB,
       this.axis, {
         double breakingForce,
  -      PhysicsJointBreakCallback breakCallback
  -    }
  -  ) : super(bodyA, bodyB, breakingForce, breakCallback) {
  -    _completeCreation();
  -  }
  -
  -  Offset axis;
  +      PhysicsJointBreakCallback breakCallback,
  +      bool enableMotor: false,
  +      double motorSpeed: 0.0,
  +      double maxMotorForce: 0.0
  +    }
  +  ) : super(bodyA, bodyB, breakingForce, breakCallback) {
  +    _enableMotor = enableMotor;
  +    _motorSpeed = motorSpeed;
  +    _maxMotorForce = maxMotorForce;
  +    _completeCreation();
  +  }
  +
  +  final Offset axis;
  +
  +  bool _enableMotor;
  +
  +  bool get enableMotor => _enableMotor;
  +
  +  set enableMotor(bool enableMotor) {
  +    _enableMotor = enableMotor;
  +    if (_joint != null) {
  +      box2d.PrismaticJoint prismaticJoint = _joint;
  +      prismaticJoint.enableMotor(enableMotor);
  +    }
  +  }
  +
  +  double _motorSpeed;
  +
  +  double get motorSpeed => _motorSpeed;
  +
  +  set motorSpeed(double motorSpeed) {
  +    _motorSpeed = motorSpeed;
  +    if (_joint != null) {
  +      box2d.PrismaticJoint prismaticJoint = _joint;
  +      prismaticJoint.setMotorSpeed(motorSpeed / _physicsNode.b2WorldToNodeConversionFactor);
  +    }
  +  }
  +
  +  double _maxMotorForce;
  +
  +  double get maxMotorForce => _maxMotorForce;
  +
  +  set maxMotorForce(double maxMotorForce) {
  +    _maxMotorForce = maxMotorForce;
  +    if (_joint != null) {
  +      box2d.PrismaticJoint prismaticJoint = _joint;
  +      prismaticJoint.setMaxMotorForce(maxMotorForce / _physicsNode.b2WorldToNodeConversionFactor);
  +    }
  +  }
   
     box2d.Joint _createB2Joint(PhysicsWorld physicsNode) {
       box2d.PrismaticJointDef b2Def = new box2d.PrismaticJointDef();
       b2Def.initialize(bodyA._body, bodyB._body, bodyA._body.position, new Vector2(axis.dx, axis.dy));
  +    b2Def.enableMotor = _enableMotor;
  +    b2Def.motorSpeed = _motorSpeed;
  +    b2Def.maxMotorForce = _maxMotorForce;
  +
       return physicsNode.b2World.createJoint(b2Def);
     }
   }
  
positive.code:     b2Def.lowerAngle = lowerAngle;
      b2Def.upperAngle = upperAngle;
  
      // Create joint
      return physicsNode.b2World.createJoint(b2Def);
    }
  
negative.code:       this.upperAngle: 0.0,
        this.enableLimit: false,
        PhysicsJointBreakCallback breakCallback,
        double breakingForce,
        bool enableMotor: false,
        double motorSpeed: 0.0,
        double maxMotorTorque: 0.0
      }) : super(bodyA, bodyB, breakingForce, breakCallback) {
      _enableMotor = enableMotor;
      _motorSpeed = motorSpeed;
      _maxMotorTorque = maxMotorTorque;
      _completeCreation();
    }
  
  