RopeJoint.smali
.class public Lorg/jbox2d/dynamics/joints/RopeJoint;
.super Lorg/jbox2d/dynamics/joints/Joint;
.source "RopeJoint.java"
# instance fields
.field private m_impulse:F
.field private m_indexA:I
.field private m_indexB:I
.field private m_invIA:F
.field private m_invIB:F
.field private m_invMassA:F
.field private m_invMassB:F
.field private m_length:F
.field private final m_localAnchorA:Lorg/jbox2d/common/Vec2;
.field private final m_localAnchorB:Lorg/jbox2d/common/Vec2;
.field private final m_localCenterA:Lorg/jbox2d/common/Vec2;
.field private final m_localCenterB:Lorg/jbox2d/common/Vec2;
.field private m_mass:F
.field private m_maxLength:F
.field private final m_rA:Lorg/jbox2d/common/Vec2;
.field private final m_rB:Lorg/jbox2d/common/Vec2;
.field private m_state:Lorg/jbox2d/dynamics/joints/LimitState;
.field private final m_u:Lorg/jbox2d/common/Vec2;
# direct methods
.method protected constructor <init>(Lorg/jbox2d/pooling/IWorldPool;Lorg/jbox2d/dynamics/joints/RopeJointDef;)V
.registers 6
.prologue
const/4 v2, 0x0
.line 43
invoke-direct {p0, p1, p2}, Lorg/jbox2d/dynamics/joints/Joint;-><init>(Lorg/jbox2d/pooling/IWorldPool;Lorg/jbox2d/dynamics/joints/JointDef;)V
.line 21
new-instance v0, Lorg/jbox2d/common/Vec2;
invoke-direct {v0}, Lorg/jbox2d/common/Vec2;-><init>()V
iput-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorA:Lorg/jbox2d/common/Vec2;
.line 22
new-instance v0, Lorg/jbox2d/common/Vec2;
invoke-direct {v0}, Lorg/jbox2d/common/Vec2;-><init>()V
iput-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorB:Lorg/jbox2d/common/Vec2;
.line 30
new-instance v0, Lorg/jbox2d/common/Vec2;
invoke-direct {v0}, Lorg/jbox2d/common/Vec2;-><init>()V
iput-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;
.line 31
new-instance v0, Lorg/jbox2d/common/Vec2;
invoke-direct {v0}, Lorg/jbox2d/common/Vec2;-><init>()V
iput-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rA:Lorg/jbox2d/common/Vec2;
.line 32
new-instance v0, Lorg/jbox2d/common/Vec2;
invoke-direct {v0}, Lorg/jbox2d/common/Vec2;-><init>()V
iput-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rB:Lorg/jbox2d/common/Vec2;
.line 33
new-instance v0, Lorg/jbox2d/common/Vec2;
invoke-direct {v0}, Lorg/jbox2d/common/Vec2;-><init>()V
iput-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localCenterA:Lorg/jbox2d/common/Vec2;
.line 34
new-instance v0, Lorg/jbox2d/common/Vec2;
invoke-direct {v0}, Lorg/jbox2d/common/Vec2;-><init>()V
iput-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localCenterB:Lorg/jbox2d/common/Vec2;
.line 44
iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorA:Lorg/jbox2d/common/Vec2;
iget-object v1, p2, Lorg/jbox2d/dynamics/joints/RopeJointDef;->localAnchorA:Lorg/jbox2d/common/Vec2;
invoke-virtual {v0, v1}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
.line 45
iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorB:Lorg/jbox2d/common/Vec2;
iget-object v1, p2, Lorg/jbox2d/dynamics/joints/RopeJointDef;->localAnchorB:Lorg/jbox2d/common/Vec2;
invoke-virtual {v0, v1}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
.line 47
iget v0, p2, Lorg/jbox2d/dynamics/joints/RopeJointDef;->maxLength:F
iput v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_maxLength:F
.line 49
iput v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_mass:F
.line 50
iput v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F
.line 51
sget-object v0, Lorg/jbox2d/dynamics/joints/LimitState;->INACTIVE:Lorg/jbox2d/dynamics/joints/LimitState;
iput-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_state:Lorg/jbox2d/dynamics/joints/LimitState;
.line 52
iput v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_length:F
.line 53
return-void
.end method
# virtual methods
.method public getAnchorA(Lorg/jbox2d/common/Vec2;)V
.registers 4
.prologue
.line 238
iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_bodyA:Lorg/jbox2d/dynamics/Body;
iget-object v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorA:Lorg/jbox2d/common/Vec2;
invoke-virtual {v0, v1, p1}, Lorg/jbox2d/dynamics/Body;->getWorldPointToOut(Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V
.line 239
return-void
.end method
.method public getAnchorB(Lorg/jbox2d/common/Vec2;)V
.registers 4
.prologue
.line 243
iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_bodyB:Lorg/jbox2d/dynamics/Body;
iget-object v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorB:Lorg/jbox2d/common/Vec2;
invoke-virtual {v0, v1, p1}, Lorg/jbox2d/dynamics/Body;->getWorldPointToOut(Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V
.line 244
return-void
.end method
.method public getLimitState()Lorg/jbox2d/dynamics/joints/LimitState;
.registers 2
.prologue
.line 273
iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_state:Lorg/jbox2d/dynamics/joints/LimitState;
return-object v0
.end method
.method public getLocalAnchorA()Lorg/jbox2d/common/Vec2;
.registers 2
.prologue
.line 257
iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorA:Lorg/jbox2d/common/Vec2;
return-object v0
.end method
.method public getLocalAnchorB()Lorg/jbox2d/common/Vec2;
.registers 2
.prologue
.line 261
iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorB:Lorg/jbox2d/common/Vec2;
return-object v0
.end method
.method public getMaxLength()F
.registers 2
.prologue
.line 265
iget v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_maxLength:F
return v0
.end method
.method public getReactionForce(FLorg/jbox2d/common/Vec2;)V
.registers 5
.prologue
.line 248
iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;
invoke-virtual {p2, v0}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
move-result-object v0
invoke-virtual {v0, p1}, Lorg/jbox2d/common/Vec2;->mulLocal(F)Lorg/jbox2d/common/Vec2;
move-result-object v0
iget v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F
invoke-virtual {v0, v1}, Lorg/jbox2d/common/Vec2;->mulLocal(F)Lorg/jbox2d/common/Vec2;
.line 249
return-void
.end method
.method public getReactionTorque(F)F
.registers 3
.prologue
.line 253
const/4 v0, 0x0
return v0
.end method
.method public initVelocityConstraints(Lorg/jbox2d/dynamics/SolverData;)V
.registers 15
.prologue
const/high16 v12, 0x3f800000 # 1.0f
const/4 v1, 0x0
.line 57
iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_bodyA:Lorg/jbox2d/dynamics/Body;
iget v0, v0, Lorg/jbox2d/dynamics/Body;->m_islandIndex:I
iput v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I
.line 58
iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_bodyB:Lorg/jbox2d/dynamics/Body;
iget v0, v0, Lorg/jbox2d/dynamics/Body;->m_islandIndex:I
iput v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I
.line 59
iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localCenterA:Lorg/jbox2d/common/Vec2;
iget-object v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_bodyA:Lorg/jbox2d/dynamics/Body;
iget-object v2, v2, Lorg/jbox2d/dynamics/Body;->m_sweep:Lorg/jbox2d/common/Sweep;
iget-object v2, v2, Lorg/jbox2d/common/Sweep;->localCenter:Lorg/jbox2d/common/Vec2;
invoke-virtual {v0, v2}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
.line 60
iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localCenterB:Lorg/jbox2d/common/Vec2;
iget-object v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_bodyB:Lorg/jbox2d/dynamics/Body;
iget-object v2, v2, Lorg/jbox2d/dynamics/Body;->m_sweep:Lorg/jbox2d/common/Sweep;
iget-object v2, v2, Lorg/jbox2d/common/Sweep;->localCenter:Lorg/jbox2d/common/Vec2;
invoke-virtual {v0, v2}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
.line 61
iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_bodyA:Lorg/jbox2d/dynamics/Body;
iget v0, v0, Lorg/jbox2d/dynamics/Body;->m_invMass:F
iput v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassA:F
.line 62
iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_bodyB:Lorg/jbox2d/dynamics/Body;
iget v0, v0, Lorg/jbox2d/dynamics/Body;->m_invMass:F
iput v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassB:F
.line 63
iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_bodyA:Lorg/jbox2d/dynamics/Body;
iget v0, v0, Lorg/jbox2d/dynamics/Body;->m_invI:F
iput v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invIA:F
.line 64
iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_bodyB:Lorg/jbox2d/dynamics/Body;
iget v0, v0, Lorg/jbox2d/dynamics/Body;->m_invI:F
iput v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invIB:F
.line 66
iget-object v0, p1, Lorg/jbox2d/dynamics/SolverData;->positions:[Lorg/jbox2d/dynamics/contacts/Position;
iget v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I
aget-object v0, v0, v2
iget-object v0, v0, Lorg/jbox2d/dynamics/contacts/Position;->c:Lorg/jbox2d/common/Vec2;
.line 67
iget-object v2, p1, Lorg/jbox2d/dynamics/SolverData;->positions:[Lorg/jbox2d/dynamics/contacts/Position;
iget v3, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I
aget-object v2, v2, v3
iget v4, v2, Lorg/jbox2d/dynamics/contacts/Position;->a:F
.line 68
iget-object v2, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;
iget v3, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I
aget-object v2, v2, v3
iget-object v5, v2, Lorg/jbox2d/dynamics/contacts/Velocity;->v:Lorg/jbox2d/common/Vec2;
.line 69
iget-object v2, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;
iget v3, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I
aget-object v2, v2, v3
iget v3, v2, Lorg/jbox2d/dynamics/contacts/Velocity;->w:F
.line 71
iget-object v2, p1, Lorg/jbox2d/dynamics/SolverData;->positions:[Lorg/jbox2d/dynamics/contacts/Position;
iget v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I
aget-object v2, v2, v6
iget-object v6, v2, Lorg/jbox2d/dynamics/contacts/Position;->c:Lorg/jbox2d/common/Vec2;
.line 72
iget-object v2, p1, Lorg/jbox2d/dynamics/SolverData;->positions:[Lorg/jbox2d/dynamics/contacts/Position;
iget v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I
aget-object v2, v2, v7
iget v7, v2, Lorg/jbox2d/dynamics/contacts/Position;->a:F
.line 73
iget-object v2, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;
iget v8, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I
aget-object v2, v2, v8
iget-object v8, v2, Lorg/jbox2d/dynamics/contacts/Velocity;->v:Lorg/jbox2d/common/Vec2;
.line 74
iget-object v2, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;
iget v9, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I
aget-object v2, v2, v9
iget v2, v2, Lorg/jbox2d/dynamics/contacts/Velocity;->w:F
.line 76
iget-object v9, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;
invoke-interface {v9}, Lorg/jbox2d/pooling/IWorldPool;->popRot()Lorg/jbox2d/common/Rot;
move-result-object v9
.line 77
iget-object v10, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;
invoke-interface {v10}, Lorg/jbox2d/pooling/IWorldPool;->popRot()Lorg/jbox2d/common/Rot;
move-result-object v10
.line 78
iget-object v11, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;
invoke-interface {v11}, Lorg/jbox2d/pooling/IWorldPool;->popVec2()Lorg/jbox2d/common/Vec2;
move-result-object v11
.line 80
invoke-virtual {v9, v4}, Lorg/jbox2d/common/Rot;->set(F)Lorg/jbox2d/common/Rot;
.line 81
invoke-virtual {v10, v7}, Lorg/jbox2d/common/Rot;->set(F)Lorg/jbox2d/common/Rot;
.line 84
iget-object v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorA:Lorg/jbox2d/common/Vec2;
invoke-virtual {v11, v4}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
move-result-object v4
iget-object v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localCenterA:Lorg/jbox2d/common/Vec2;
invoke-virtual {v4, v7}, Lorg/jbox2d/common/Vec2;->subLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
move-result-object v4
iget-object v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rA:Lorg/jbox2d/common/Vec2;
invoke-static {v9, v4, v7}, Lorg/jbox2d/common/Rot;->mulToOutUnsafe(Lorg/jbox2d/common/Rot;Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V
.line 85
iget-object v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorB:Lorg/jbox2d/common/Vec2;
invoke-virtual {v11, v4}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
move-result-object v4
iget-object v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localCenterB:Lorg/jbox2d/common/Vec2;
invoke-virtual {v4, v7}, Lorg/jbox2d/common/Vec2;->subLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
move-result-object v4
iget-object v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rB:Lorg/jbox2d/common/Vec2;
invoke-static {v10, v4, v7}, Lorg/jbox2d/common/Rot;->mulToOutUnsafe(Lorg/jbox2d/common/Rot;Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V
.line 87
iget-object v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;
invoke-virtual {v4, v6}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
move-result-object v4
iget-object v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rB:Lorg/jbox2d/common/Vec2;
invoke-virtual {v4, v6}, Lorg/jbox2d/common/Vec2;->addLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
move-result-object v4
invoke-virtual {v4, v0}, Lorg/jbox2d/common/Vec2;->subLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
move-result-object v0
iget-object v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rA:Lorg/jbox2d/common/Vec2;
invoke-virtual {v0, v4}, Lorg/jbox2d/common/Vec2;->subLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
.line 89
iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;
invoke-virtual {v0}, Lorg/jbox2d/common/Vec2;->length()F
move-result v0
iput v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_length:F
.line 91
iget v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_length:F
iget v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_maxLength:F
sub-float/2addr v0, v4
.line 92
cmpl-float v0, v0, v1
if-lez v0, :cond_193
.line 93
sget-object v0, Lorg/jbox2d/dynamics/joints/LimitState;->AT_UPPER:Lorg/jbox2d/dynamics/joints/LimitState;
iput-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_state:Lorg/jbox2d/dynamics/joints/LimitState;
.line 98
:goto_e1
iget v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_length:F
sget v4, Lorg/jbox2d/common/Settings;->linearSlop:F
cmpl-float v0, v0, v4
if-lez v0, :cond_199
.line 99
iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;
iget v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_length:F
div-float v4, v12, v4
invoke-virtual {v0, v4}, Lorg/jbox2d/common/Vec2;->mulLocal(F)Lorg/jbox2d/common/Vec2;
.line 108
iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rA:Lorg/jbox2d/common/Vec2;
iget-object v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;
invoke-static {v0, v4}, Lorg/jbox2d/common/Vec2;->cross(Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)F
move-result v0
.line 109
iget-object v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rB:Lorg/jbox2d/common/Vec2;
iget-object v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;
invoke-static {v4, v6}, Lorg/jbox2d/common/Vec2;->cross(Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)F
move-result v4
.line 110
iget v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassA:F
iget v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invIA:F
mul-float/2addr v7, v0
mul-float/2addr v0, v7
add-float/2addr v0, v6
iget v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassB:F
add-float/2addr v0, v6
iget v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invIB:F
mul-float/2addr v6, v4
mul-float/2addr v4, v6
add-float/2addr v0, v4
.line 112
cmpl-float v4, v0, v1
if-eqz v4, :cond_1a3
div-float v0, v12, v0
:goto_117
iput v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_mass:F
.line 114
iget-object v0, p1, Lorg/jbox2d/dynamics/SolverData;->step:Lorg/jbox2d/dynamics/TimeStep;
iget-boolean v0, v0, Lorg/jbox2d/dynamics/TimeStep;->warmStarting:Z
if-eqz v0, :cond_1a6
.line 116
iget v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F
iget-object v1, p1, Lorg/jbox2d/dynamics/SolverData;->step:Lorg/jbox2d/dynamics/TimeStep;
iget v1, v1, Lorg/jbox2d/dynamics/TimeStep;->dtRatio:F
mul-float/2addr v0, v1
iput v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F
.line 118
iget v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F
iget-object v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;
iget v1, v1, Lorg/jbox2d/common/Vec2;->x:F
mul-float/2addr v0, v1
.line 119
iget v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F
iget-object v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;
iget v4, v4, Lorg/jbox2d/common/Vec2;->y:F
mul-float/2addr v4, v1
.line 120
iget v1, v5, Lorg/jbox2d/common/Vec2;->x:F
iget v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassA:F
mul-float/2addr v6, v0
sub-float/2addr v1, v6
iput v1, v5, Lorg/jbox2d/common/Vec2;->x:F
.line 121
iget v1, v5, Lorg/jbox2d/common/Vec2;->y:F
iget v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassA:F
mul-float/2addr v6, v4
sub-float/2addr v1, v6
iput v1, v5, Lorg/jbox2d/common/Vec2;->y:F
.line 122
iget v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invIA:F
iget-object v5, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rA:Lorg/jbox2d/common/Vec2;
iget v5, v5, Lorg/jbox2d/common/Vec2;->x:F
mul-float/2addr v5, v4
iget-object v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rA:Lorg/jbox2d/common/Vec2;
iget v6, v6, Lorg/jbox2d/common/Vec2;->y:F
mul-float/2addr v6, v0
sub-float/2addr v5, v6
mul-float/2addr v1, v5
sub-float v1, v3, v1
.line 124
iget v3, v8, Lorg/jbox2d/common/Vec2;->x:F
iget v5, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassB:F
mul-float/2addr v5, v0
add-float/2addr v3, v5
iput v3, v8, Lorg/jbox2d/common/Vec2;->x:F
.line 125
iget v3, v8, Lorg/jbox2d/common/Vec2;->y:F
iget v5, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassB:F
mul-float/2addr v5, v4
add-float/2addr v3, v5
iput v3, v8, Lorg/jbox2d/common/Vec2;->y:F
.line 126
iget v3, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invIB:F
iget-object v5, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rB:Lorg/jbox2d/common/Vec2;
iget v5, v5, Lorg/jbox2d/common/Vec2;->x:F
mul-float/2addr v4, v5
iget-object v5, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rB:Lorg/jbox2d/common/Vec2;
iget v5, v5, Lorg/jbox2d/common/Vec2;->y:F
mul-float/2addr v0, v5
sub-float v0, v4, v0
mul-float/2addr v0, v3
add-float/2addr v0, v2
.line 131
:goto_176
iget-object v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;
const/4 v3, 0x2
invoke-interface {v2, v3}, Lorg/jbox2d/pooling/IWorldPool;->pushRot(I)V
.line 132
iget-object v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;
const/4 v3, 0x1
invoke-interface {v2, v3}, Lorg/jbox2d/pooling/IWorldPool;->pushVec2(I)V
.line 135
iget-object v2, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;
iget v3, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I
aget-object v2, v2, v3
iput v1, v2, Lorg/jbox2d/dynamics/contacts/Velocity;->w:F
.line 137
iget-object v1, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;
iget v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I
aget-object v1, v1, v2
iput v0, v1, Lorg/jbox2d/dynamics/contacts/Velocity;->w:F
.line 138
:goto_192
return-void
.line 95
:cond_193
sget-object v0, Lorg/jbox2d/dynamics/joints/LimitState;->INACTIVE:Lorg/jbox2d/dynamics/joints/LimitState;
iput-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_state:Lorg/jbox2d/dynamics/joints/LimitState;
goto/16 :goto_e1
.line 101
:cond_199
iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;
invoke-virtual {v0}, Lorg/jbox2d/common/Vec2;->setZero()V
.line 102
iput v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_mass:F
.line 103
iput v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F
goto :goto_192
:cond_1a3
move v0, v1
.line 112
goto/16 :goto_117
.line 128
:cond_1a6
iput v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F
move v0, v2
move v1, v3
goto :goto_176
.end method
.method public setMaxLength(F)V
.registers 2
.prologue
.line 269
iput p1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_maxLength:F
.line 270
return-void
.end method
.method public solvePositionConstraints(Lorg/jbox2d/dynamics/SolverData;)Z
.registers 14
.prologue
.line 189
iget-object v0, p1, Lorg/jbox2d/dynamics/SolverData;->positions:[Lorg/jbox2d/dynamics/contacts/Position;
iget v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I
aget-object v0, v0, v1
iget-object v0, v0, Lorg/jbox2d/dynamics/contacts/Position;->c:Lorg/jbox2d/common/Vec2;
.line 190
iget-object v1, p1, Lorg/jbox2d/dynamics/SolverData;->positions:[Lorg/jbox2d/dynamics/contacts/Position;
iget v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I
aget-object v1, v1, v2
iget v1, v1, Lorg/jbox2d/dynamics/contacts/Position;->a:F
.line 191
iget-object v2, p1, Lorg/jbox2d/dynamics/SolverData;->positions:[Lorg/jbox2d/dynamics/contacts/Position;
iget v3, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I
aget-object v2, v2, v3
iget-object v2, v2, Lorg/jbox2d/dynamics/contacts/Position;->c:Lorg/jbox2d/common/Vec2;
.line 192
iget-object v3, p1, Lorg/jbox2d/dynamics/SolverData;->positions:[Lorg/jbox2d/dynamics/contacts/Position;
iget v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I
aget-object v3, v3, v4
iget v3, v3, Lorg/jbox2d/dynamics/contacts/Position;->a:F
.line 194
iget-object v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;
invoke-interface {v4}, Lorg/jbox2d/pooling/IWorldPool;->popRot()Lorg/jbox2d/common/Rot;
move-result-object v4
.line 195
iget-object v5, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;
invoke-interface {v5}, Lorg/jbox2d/pooling/IWorldPool;->popRot()Lorg/jbox2d/common/Rot;
move-result-object v5
.line 196
iget-object v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;
invoke-interface {v6}, Lorg/jbox2d/pooling/IWorldPool;->popVec2()Lorg/jbox2d/common/Vec2;
move-result-object v6
.line 197
iget-object v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;
invoke-interface {v7}, Lorg/jbox2d/pooling/IWorldPool;->popVec2()Lorg/jbox2d/common/Vec2;
move-result-object v7
.line 198
iget-object v8, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;
invoke-interface {v8}, Lorg/jbox2d/pooling/IWorldPool;->popVec2()Lorg/jbox2d/common/Vec2;
move-result-object v8
.line 199
iget-object v9, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;
invoke-interface {v9}, Lorg/jbox2d/pooling/IWorldPool;->popVec2()Lorg/jbox2d/common/Vec2;
move-result-object v9
.line 201
invoke-virtual {v4, v1}, Lorg/jbox2d/common/Rot;->set(F)Lorg/jbox2d/common/Rot;
.line 202
invoke-virtual {v5, v3}, Lorg/jbox2d/common/Rot;->set(F)Lorg/jbox2d/common/Rot;
.line 205
iget-object v10, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorA:Lorg/jbox2d/common/Vec2;
invoke-virtual {v9, v10}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
move-result-object v10
iget-object v11, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localCenterA:Lorg/jbox2d/common/Vec2;
invoke-virtual {v10, v11}, Lorg/jbox2d/common/Vec2;->subLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
move-result-object v10
invoke-static {v4, v10, v7}, Lorg/jbox2d/common/Rot;->mulToOutUnsafe(Lorg/jbox2d/common/Rot;Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V
.line 206
iget-object v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorB:Lorg/jbox2d/common/Vec2;
invoke-virtual {v9, v4}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
move-result-object v4
iget-object v9, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localCenterB:Lorg/jbox2d/common/Vec2;
invoke-virtual {v4, v9}, Lorg/jbox2d/common/Vec2;->subLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
move-result-object v4
invoke-static {v5, v4, v8}, Lorg/jbox2d/common/Rot;->mulToOutUnsafe(Lorg/jbox2d/common/Rot;Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V
.line 207
invoke-virtual {v6, v2}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
move-result-object v4
invoke-virtual {v4, v8}, Lorg/jbox2d/common/Vec2;->addLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
move-result-object v4
invoke-virtual {v4, v0}, Lorg/jbox2d/common/Vec2;->subLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
move-result-object v4
invoke-virtual {v4, v7}, Lorg/jbox2d/common/Vec2;->subLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
.line 209
invoke-virtual {v6}, Lorg/jbox2d/common/Vec2;->normalize()F
move-result v4
.line 210
iget v5, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_maxLength:F
sub-float v5, v4, v5
.line 212
const/4 v9, 0x0
sget v10, Lorg/jbox2d/common/Settings;->maxLinearCorrection:F
invoke-static {v5, v9, v10}, Lorg/jbox2d/common/MathUtils;->clamp(FFF)F
move-result v5
.line 214
iget v9, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_mass:F
neg-float v9, v9
mul-float/2addr v5, v9
.line 215
iget v9, v6, Lorg/jbox2d/common/Vec2;->x:F
mul-float/2addr v9, v5
.line 216
iget v6, v6, Lorg/jbox2d/common/Vec2;->y:F
mul-float/2addr v5, v6
.line 218
iget v6, v0, Lorg/jbox2d/common/Vec2;->x:F
iget v10, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassA:F
mul-float/2addr v10, v9
sub-float/2addr v6, v10
iput v6, v0, Lorg/jbox2d/common/Vec2;->x:F
.line 219
iget v6, v0, Lorg/jbox2d/common/Vec2;->y:F
iget v10, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassA:F
mul-float/2addr v10, v5
sub-float/2addr v6, v10
iput v6, v0, Lorg/jbox2d/common/Vec2;->y:F
.line 220
iget v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invIA:F
iget v6, v7, Lorg/jbox2d/common/Vec2;->x:F
mul-float/2addr v6, v5
iget v7, v7, Lorg/jbox2d/common/Vec2;->y:F
mul-float/2addr v7, v9
sub-float/2addr v6, v7
mul-float/2addr v0, v6
sub-float v0, v1, v0
.line 221
iget v1, v2, Lorg/jbox2d/common/Vec2;->x:F
iget v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassB:F
mul-float/2addr v6, v9
add-float/2addr v1, v6
iput v1, v2, Lorg/jbox2d/common/Vec2;->x:F
.line 222
iget v1, v2, Lorg/jbox2d/common/Vec2;->y:F
iget v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassB:F
mul-float/2addr v6, v5
add-float/2addr v1, v6
iput v1, v2, Lorg/jbox2d/common/Vec2;->y:F
.line 223
iget v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invIB:F
iget v2, v8, Lorg/jbox2d/common/Vec2;->x:F
mul-float/2addr v2, v5
iget v5, v8, Lorg/jbox2d/common/Vec2;->y:F
mul-float/2addr v5, v9
sub-float/2addr v2, v5
mul-float/2addr v1, v2
add-float/2addr v1, v3
.line 225
iget-object v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;
const/4 v3, 0x2
invoke-interface {v2, v3}, Lorg/jbox2d/pooling/IWorldPool;->pushRot(I)V
.line 226
iget-object v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;
const/4 v3, 0x4
invoke-interface {v2, v3}, Lorg/jbox2d/pooling/IWorldPool;->pushVec2(I)V
.line 229
iget-object v2, p1, Lorg/jbox2d/dynamics/SolverData;->positions:[Lorg/jbox2d/dynamics/contacts/Position;
iget v3, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I
aget-object v2, v2, v3
iput v0, v2, Lorg/jbox2d/dynamics/contacts/Position;->a:F
.line 231
iget-object v0, p1, Lorg/jbox2d/dynamics/SolverData;->positions:[Lorg/jbox2d/dynamics/contacts/Position;
iget v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I
aget-object v0, v0, v2
iput v1, v0, Lorg/jbox2d/dynamics/contacts/Position;->a:F
.line 233
iget v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_maxLength:F
sub-float v0, v4, v0
sget v1, Lorg/jbox2d/common/Settings;->linearSlop:F
cmpg-float v0, v0, v1
if-gez v0, :cond_ef
const/4 v0, 0x1
:goto_ee
return v0
:cond_ef
const/4 v0, 0x0
goto :goto_ee
.end method
.method public solveVelocityConstraints(Lorg/jbox2d/dynamics/SolverData;)V
.registers 12
.prologue
const/4 v9, 0x0
.line 142
iget-object v0, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;
iget v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I
aget-object v0, v0, v1
iget-object v1, v0, Lorg/jbox2d/dynamics/contacts/Velocity;->v:Lorg/jbox2d/common/Vec2;
.line 143
iget-object v0, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;
iget v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I
aget-object v0, v0, v2
iget v2, v0, Lorg/jbox2d/dynamics/contacts/Velocity;->w:F
.line 144
iget-object v0, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;
iget v3, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I
aget-object v0, v0, v3
iget-object v3, v0, Lorg/jbox2d/dynamics/contacts/Velocity;->v:Lorg/jbox2d/common/Vec2;
.line 145
iget-object v0, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;
iget v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I
aget-object v0, v0, v4
iget v4, v0, Lorg/jbox2d/dynamics/contacts/Velocity;->w:F
.line 148
iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;
invoke-interface {v0}, Lorg/jbox2d/pooling/IWorldPool;->popVec2()Lorg/jbox2d/common/Vec2;
move-result-object v0
.line 149
iget-object v5, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;
invoke-interface {v5}, Lorg/jbox2d/pooling/IWorldPool;->popVec2()Lorg/jbox2d/common/Vec2;
move-result-object v5
.line 150
iget-object v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;
invoke-interface {v6}, Lorg/jbox2d/pooling/IWorldPool;->popVec2()Lorg/jbox2d/common/Vec2;
move-result-object v6
.line 152
iget-object v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rA:Lorg/jbox2d/common/Vec2;
invoke-static {v2, v7, v0}, Lorg/jbox2d/common/Vec2;->crossToOutUnsafe(FLorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V
.line 153
invoke-virtual {v0, v1}, Lorg/jbox2d/common/Vec2;->addLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
.line 154
iget-object v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rB:Lorg/jbox2d/common/Vec2;
invoke-static {v4, v7, v5}, Lorg/jbox2d/common/Vec2;->crossToOutUnsafe(FLorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V
.line 155
invoke-virtual {v5, v3}, Lorg/jbox2d/common/Vec2;->addLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
.line 157
iget v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_length:F
iget v8, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_maxLength:F
sub-float/2addr v7, v8
.line 158
iget-object v8, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;
invoke-virtual {v6, v5}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
move-result-object v5
invoke-virtual {v5, v0}, Lorg/jbox2d/common/Vec2;->subLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;
move-result-object v0
invoke-static {v8, v0}, Lorg/jbox2d/common/Vec2;->dot(Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)F
move-result v0
.line 161
cmpg-float v5, v7, v9
if-gez v5, :cond_60
.line 162
iget-object v5, p1, Lorg/jbox2d/dynamics/SolverData;->step:Lorg/jbox2d/dynamics/TimeStep;
iget v5, v5, Lorg/jbox2d/dynamics/TimeStep;->inv_dt:F
mul-float/2addr v5, v7
add-float/2addr v0, v5
.line 165
:cond_60
iget v5, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_mass:F
neg-float v5, v5
mul-float/2addr v0, v5
.line 166
iget v5, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F
.line 167
iget v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F
add-float/2addr v0, v6
invoke-static {v9, v0}, Lorg/jbox2d/common/MathUtils;->min(FF)F
move-result v0
iput v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F
.line 168
iget v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F
sub-float/2addr v0, v5
.line 170
iget-object v5, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;
iget v5, v5, Lorg/jbox2d/common/Vec2;->x:F
mul-float/2addr v5, v0
.line 171
iget-object v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;
iget v6, v6, Lorg/jbox2d/common/Vec2;->y:F
mul-float/2addr v0, v6
.line 172
iget v6, v1, Lorg/jbox2d/common/Vec2;->x:F
iget v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassA:F
mul-float/2addr v7, v5
sub-float/2addr v6, v7
iput v6, v1, Lorg/jbox2d/common/Vec2;->x:F
.line 173
iget v6, v1, Lorg/jbox2d/common/Vec2;->y:F
iget v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassA:F
mul-float/2addr v7, v0
sub-float/2addr v6, v7
iput v6, v1, Lorg/jbox2d/common/Vec2;->y:F
.line 174
iget v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invIA:F
iget-object v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rA:Lorg/jbox2d/common/Vec2;
iget v6, v6, Lorg/jbox2d/common/Vec2;->x:F
mul-float/2addr v6, v0
iget-object v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rA:Lorg/jbox2d/common/Vec2;
iget v7, v7, Lorg/jbox2d/common/Vec2;->y:F
mul-float/2addr v7, v5
sub-float/2addr v6, v7
mul-float/2addr v1, v6
sub-float v1, v2, v1
.line 175
iget v2, v3, Lorg/jbox2d/common/Vec2;->x:F
iget v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassB:F
mul-float/2addr v6, v5
add-float/2addr v2, v6
iput v2, v3, Lorg/jbox2d/common/Vec2;->x:F
.line 176
iget v2, v3, Lorg/jbox2d/common/Vec2;->y:F
iget v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassB:F
mul-float/2addr v6, v0
add-float/2addr v2, v6
iput v2, v3, Lorg/jbox2d/common/Vec2;->y:F
.line 177
iget v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invIB:F
iget-object v3, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rB:Lorg/jbox2d/common/Vec2;
iget v3, v3, Lorg/jbox2d/common/Vec2;->x:F
mul-float/2addr v0, v3
iget-object v3, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rB:Lorg/jbox2d/common/Vec2;
iget v3, v3, Lorg/jbox2d/common/Vec2;->y:F
mul-float/2addr v3, v5
sub-float/2addr v0, v3
mul-float/2addr v0, v2
add-float/2addr v0, v4
.line 179
iget-object v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;
const/4 v3, 0x3
invoke-interface {v2, v3}, Lorg/jbox2d/pooling/IWorldPool;->pushVec2(I)V
.line 182
iget-object v2, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;
iget v3, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I
aget-object v2, v2, v3
iput v1, v2, Lorg/jbox2d/dynamics/contacts/Velocity;->w:F
.line 184
iget-object v1, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;
iget v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I
aget-object v1, v1, v2
iput v0, v1, Lorg/jbox2d/dynamics/contacts/Velocity;->w:F
.line 185
return-void
.end method