今奥全景相机
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1344 lines
31 KiB

.class public Lcom/facebook/rebound/Spring;
.super Ljava/lang/Object;
.source "Spring.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/facebook/rebound/Spring$PhysicsState;
}
.end annotation
# static fields
.field private static ID:I = 0x0
.field private static final MAX_DELTA_TIME_SEC:D = 0.064
.field private static final SOLVER_TIMESTEP_SEC:D = 0.001
# instance fields
.field private final mCurrentState:Lcom/facebook/rebound/Spring$PhysicsState;
.field private mDisplacementFromRestThreshold:D
.field private mEndValue:D
.field private final mId:Ljava/lang/String;
.field private mListeners:Ljava/util/concurrent/CopyOnWriteArraySet;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/CopyOnWriteArraySet",
"<",
"Lcom/facebook/rebound/SpringListener;",
">;"
}
.end annotation
.end field
.field private mOvershootClampingEnabled:Z
.field private final mPreviousState:Lcom/facebook/rebound/Spring$PhysicsState;
.field private mRestSpeedThreshold:D
.field private mSpringConfig:Lcom/facebook/rebound/SpringConfig;
.field private final mSpringSystem:Lcom/facebook/rebound/BaseSpringSystem;
.field private mStartValue:D
.field private final mTempState:Lcom/facebook/rebound/Spring$PhysicsState;
.field private mTimeAccumulator:D
.field private mWasAtRest:Z
# direct methods
.method static constructor <clinit>()V
.locals 1
.prologue
.line 21
const/4 v0, 0x0
sput v0, Lcom/facebook/rebound/Spring;->ID:I
return-void
.end method
.method constructor <init>(Lcom/facebook/rebound/BaseSpringSystem;)V
.locals 4
.prologue
const-wide v2, 0x3f747ae147ae147bL # 0.005
const/4 v1, 0x0
.line 56
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 39
new-instance v0, Lcom/facebook/rebound/Spring$PhysicsState;
invoke-direct {v0, v1}, Lcom/facebook/rebound/Spring$PhysicsState;-><init>(Lcom/facebook/rebound/Spring$1;)V
iput-object v0, p0, Lcom/facebook/rebound/Spring;->mCurrentState:Lcom/facebook/rebound/Spring$PhysicsState;
.line 40
new-instance v0, Lcom/facebook/rebound/Spring$PhysicsState;
invoke-direct {v0, v1}, Lcom/facebook/rebound/Spring$PhysicsState;-><init>(Lcom/facebook/rebound/Spring$1;)V
iput-object v0, p0, Lcom/facebook/rebound/Spring;->mPreviousState:Lcom/facebook/rebound/Spring$PhysicsState;
.line 41
new-instance v0, Lcom/facebook/rebound/Spring$PhysicsState;
invoke-direct {v0, v1}, Lcom/facebook/rebound/Spring$PhysicsState;-><init>(Lcom/facebook/rebound/Spring$1;)V
iput-object v0, p0, Lcom/facebook/rebound/Spring;->mTempState:Lcom/facebook/rebound/Spring$PhysicsState;
.line 44
const/4 v0, 0x1
iput-boolean v0, p0, Lcom/facebook/rebound/Spring;->mWasAtRest:Z
.line 46
iput-wide v2, p0, Lcom/facebook/rebound/Spring;->mRestSpeedThreshold:D
.line 47
iput-wide v2, p0, Lcom/facebook/rebound/Spring;->mDisplacementFromRestThreshold:D
.line 48
new-instance v0, Ljava/util/concurrent/CopyOnWriteArraySet;
invoke-direct {v0}, Ljava/util/concurrent/CopyOnWriteArraySet;-><init>()V
iput-object v0, p0, Lcom/facebook/rebound/Spring;->mListeners:Ljava/util/concurrent/CopyOnWriteArraySet;
.line 49
const-wide/16 v0, 0x0
iput-wide v0, p0, Lcom/facebook/rebound/Spring;->mTimeAccumulator:D
.line 57
if-nez p1, :cond_0
.line 58
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "Spring cannot be created outside of a BaseSpringSystem"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 60
:cond_0
iput-object p1, p0, Lcom/facebook/rebound/Spring;->mSpringSystem:Lcom/facebook/rebound/BaseSpringSystem;
.line 61
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "spring:"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
sget v1, Lcom/facebook/rebound/Spring;->ID:I
add-int/lit8 v2, v1, 0x1
sput v2, Lcom/facebook/rebound/Spring;->ID:I
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lcom/facebook/rebound/Spring;->mId:Ljava/lang/String;
.line 62
sget-object v0, Lcom/facebook/rebound/SpringConfig;->defaultConfig:Lcom/facebook/rebound/SpringConfig;
invoke-virtual {p0, v0}, Lcom/facebook/rebound/Spring;->setSpringConfig(Lcom/facebook/rebound/SpringConfig;)Lcom/facebook/rebound/Spring;
.line 63
return-void
.end method
.method private getDisplacementDistanceForState(Lcom/facebook/rebound/Spring$PhysicsState;)D
.locals 4
.prologue
.line 151
iget-wide v0, p0, Lcom/facebook/rebound/Spring;->mEndValue:D
iget-wide v2, p1, Lcom/facebook/rebound/Spring$PhysicsState;->position:D
sub-double/2addr v0, v2
invoke-static {v0, v1}, Ljava/lang/Math;->abs(D)D
move-result-wide v0
return-wide v0
.end method
.method private interpolate(D)V
.locals 11
.prologue
const-wide/high16 v8, 0x3ff0000000000000L # 1.0
.line 468
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mCurrentState:Lcom/facebook/rebound/Spring$PhysicsState;
iget-object v1, p0, Lcom/facebook/rebound/Spring;->mCurrentState:Lcom/facebook/rebound/Spring$PhysicsState;
iget-wide v2, v1, Lcom/facebook/rebound/Spring$PhysicsState;->position:D
mul-double/2addr v2, p1
iget-object v1, p0, Lcom/facebook/rebound/Spring;->mPreviousState:Lcom/facebook/rebound/Spring$PhysicsState;
iget-wide v4, v1, Lcom/facebook/rebound/Spring$PhysicsState;->position:D
sub-double v6, v8, p1
mul-double/2addr v4, v6
add-double/2addr v2, v4
iput-wide v2, v0, Lcom/facebook/rebound/Spring$PhysicsState;->position:D
.line 469
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mCurrentState:Lcom/facebook/rebound/Spring$PhysicsState;
iget-object v1, p0, Lcom/facebook/rebound/Spring;->mCurrentState:Lcom/facebook/rebound/Spring$PhysicsState;
iget-wide v2, v1, Lcom/facebook/rebound/Spring$PhysicsState;->velocity:D
mul-double/2addr v2, p1
iget-object v1, p0, Lcom/facebook/rebound/Spring;->mPreviousState:Lcom/facebook/rebound/Spring$PhysicsState;
iget-wide v4, v1, Lcom/facebook/rebound/Spring$PhysicsState;->velocity:D
sub-double v6, v8, p1
mul-double/2addr v4, v6
add-double/2addr v2, v4
iput-wide v2, v0, Lcom/facebook/rebound/Spring$PhysicsState;->velocity:D
.line 470
return-void
.end method
# virtual methods
.method public addListener(Lcom/facebook/rebound/SpringListener;)Lcom/facebook/rebound/Spring;
.locals 2
.prologue
.line 480
if-nez p1, :cond_0
.line 481
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "newListener is required"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 483
:cond_0
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mListeners:Ljava/util/concurrent/CopyOnWriteArraySet;
invoke-virtual {v0, p1}, Ljava/util/concurrent/CopyOnWriteArraySet;->add(Ljava/lang/Object;)Z
.line 484
return-object p0
.end method
.method advance(D)V
.locals 33
.prologue
.line 272
invoke-virtual/range {p0 .. p0}, Lcom/facebook/rebound/Spring;->isAtRest()Z
move-result v10
.line 274
if-eqz v10, :cond_1
move-object/from16 v0, p0
iget-boolean v2, v0, Lcom/facebook/rebound/Spring;->mWasAtRest:Z
if-eqz v2, :cond_1
.line 421
:cond_0
return-void
.line 284
:cond_1
const-wide v2, 0x3fb0624dd2f1a9fcL # 0.064
cmpl-double v2, p1, v2
if-lez v2, :cond_2
.line 285
const-wide p1, 0x3fb0624dd2f1a9fcL # 0.064
.line 293
:cond_2
move-object/from16 v0, p0
iget-wide v2, v0, Lcom/facebook/rebound/Spring;->mTimeAccumulator:D
add-double v2, v2, p1
move-object/from16 v0, p0
iput-wide v2, v0, Lcom/facebook/rebound/Spring;->mTimeAccumulator:D
.line 295
move-object/from16 v0, p0
iget-object v2, v0, Lcom/facebook/rebound/Spring;->mSpringConfig:Lcom/facebook/rebound/SpringConfig;
iget-wide v12, v2, Lcom/facebook/rebound/SpringConfig;->tension:D
.line 296
move-object/from16 v0, p0
iget-object v2, v0, Lcom/facebook/rebound/Spring;->mSpringConfig:Lcom/facebook/rebound/SpringConfig;
iget-wide v14, v2, Lcom/facebook/rebound/SpringConfig;->friction:D
.line 298
move-object/from16 v0, p0
iget-object v2, v0, Lcom/facebook/rebound/Spring;->mCurrentState:Lcom/facebook/rebound/Spring$PhysicsState;
iget-wide v8, v2, Lcom/facebook/rebound/Spring$PhysicsState;->position:D
.line 299
move-object/from16 v0, p0
iget-object v2, v0, Lcom/facebook/rebound/Spring;->mCurrentState:Lcom/facebook/rebound/Spring$PhysicsState;
iget-wide v6, v2, Lcom/facebook/rebound/Spring$PhysicsState;->velocity:D
.line 300
move-object/from16 v0, p0
iget-object v2, v0, Lcom/facebook/rebound/Spring;->mTempState:Lcom/facebook/rebound/Spring$PhysicsState;
iget-wide v4, v2, Lcom/facebook/rebound/Spring$PhysicsState;->position:D
.line 301
move-object/from16 v0, p0
iget-object v2, v0, Lcom/facebook/rebound/Spring;->mTempState:Lcom/facebook/rebound/Spring$PhysicsState;
iget-wide v2, v2, Lcom/facebook/rebound/Spring$PhysicsState;->velocity:D
.line 311
:goto_0
move-object/from16 v0, p0
iget-wide v0, v0, Lcom/facebook/rebound/Spring;->mTimeAccumulator:D
move-wide/from16 v16, v0
const-wide v18, 0x3f50624dd2f1a9fcL # 0.001
cmpl-double v11, v16, v18
if-ltz v11, :cond_4
.line 315
move-object/from16 v0, p0
iget-wide v2, v0, Lcom/facebook/rebound/Spring;->mTimeAccumulator:D
const-wide v16, 0x3f50624dd2f1a9fcL # 0.001
sub-double v2, v2, v16
move-object/from16 v0, p0
iput-wide v2, v0, Lcom/facebook/rebound/Spring;->mTimeAccumulator:D
.line 317
move-object/from16 v0, p0
iget-wide v2, v0, Lcom/facebook/rebound/Spring;->mTimeAccumulator:D
const-wide v16, 0x3f50624dd2f1a9fcL # 0.001
cmpg-double v2, v2, v16
if-gez v2, :cond_3
.line 320
move-object/from16 v0, p0
iget-object v2, v0, Lcom/facebook/rebound/Spring;->mPreviousState:Lcom/facebook/rebound/Spring$PhysicsState;
iput-wide v8, v2, Lcom/facebook/rebound/Spring$PhysicsState;->position:D
.line 321
move-object/from16 v0, p0
iget-object v2, v0, Lcom/facebook/rebound/Spring;->mPreviousState:Lcom/facebook/rebound/Spring$PhysicsState;
iput-wide v6, v2, Lcom/facebook/rebound/Spring$PhysicsState;->velocity:D
.line 333
:cond_3
move-object/from16 v0, p0
iget-wide v2, v0, Lcom/facebook/rebound/Spring;->mEndValue:D
sub-double/2addr v2, v4
mul-double/2addr v2, v12
mul-double v4, v14, v6
sub-double v16, v2, v4
.line 337
const-wide v2, 0x3f50624dd2f1a9fcL # 0.001
mul-double/2addr v2, v6
const-wide/high16 v4, 0x3fe0000000000000L # 0.5
mul-double/2addr v2, v4
add-double/2addr v2, v8
.line 338
const-wide v4, 0x3f50624dd2f1a9fcL # 0.001
mul-double v4, v4, v16
const-wide/high16 v18, 0x3fe0000000000000L # 0.5
mul-double v4, v4, v18
add-double v18, v6, v4
.line 340
move-object/from16 v0, p0
iget-wide v4, v0, Lcom/facebook/rebound/Spring;->mEndValue:D
sub-double v2, v4, v2
mul-double/2addr v2, v12
mul-double v4, v14, v18
sub-double v20, v2, v4
.line 342
const-wide v2, 0x3f50624dd2f1a9fcL # 0.001
mul-double v2, v2, v18
const-wide/high16 v4, 0x3fe0000000000000L # 0.5
mul-double/2addr v2, v4
add-double/2addr v2, v8
.line 343
const-wide v4, 0x3f50624dd2f1a9fcL # 0.001
mul-double v4, v4, v20
const-wide/high16 v22, 0x3fe0000000000000L # 0.5
mul-double v4, v4, v22
add-double v22, v6, v4
.line 345
move-object/from16 v0, p0
iget-wide v4, v0, Lcom/facebook/rebound/Spring;->mEndValue:D
sub-double v2, v4, v2
mul-double/2addr v2, v12
mul-double v4, v14, v22
sub-double v24, v2, v4
.line 347
const-wide v2, 0x3f50624dd2f1a9fcL # 0.001
mul-double v2, v2, v22
add-double v4, v8, v2
.line 348
const-wide v2, 0x3f50624dd2f1a9fcL # 0.001
mul-double v2, v2, v24
add-double/2addr v2, v6
.line 350
move-object/from16 v0, p0
iget-wide v0, v0, Lcom/facebook/rebound/Spring;->mEndValue:D
move-wide/from16 v26, v0
sub-double v26, v26, v4
mul-double v26, v26, v12
mul-double v28, v14, v2
sub-double v26, v26, v28
.line 353
const-wide v28, 0x3fc5555555555555L # 0.16666666666666666
const-wide/high16 v30, 0x4000000000000000L # 2.0
add-double v18, v18, v22
mul-double v18, v18, v30
add-double v18, v18, v6
add-double v18, v18, v2
mul-double v18, v18, v28
.line 354
const-wide v22, 0x3fc5555555555555L # 0.16666666666666666
const-wide/high16 v28, 0x4000000000000000L # 2.0
add-double v20, v20, v24
mul-double v20, v20, v28
add-double v16, v16, v20
add-double v16, v16, v26
mul-double v16, v16, v22
.line 356
const-wide v20, 0x3f50624dd2f1a9fcL # 0.001
mul-double v18, v18, v20
add-double v8, v8, v18
.line 357
const-wide v18, 0x3f50624dd2f1a9fcL # 0.001
mul-double v16, v16, v18
add-double v6, v6, v16
goto/16 :goto_0
.line 360
:cond_4
move-object/from16 v0, p0
iget-object v11, v0, Lcom/facebook/rebound/Spring;->mTempState:Lcom/facebook/rebound/Spring$PhysicsState;
iput-wide v4, v11, Lcom/facebook/rebound/Spring$PhysicsState;->position:D
.line 361
move-object/from16 v0, p0
iget-object v4, v0, Lcom/facebook/rebound/Spring;->mTempState:Lcom/facebook/rebound/Spring$PhysicsState;
iput-wide v2, v4, Lcom/facebook/rebound/Spring$PhysicsState;->velocity:D
.line 363
move-object/from16 v0, p0
iget-object v2, v0, Lcom/facebook/rebound/Spring;->mCurrentState:Lcom/facebook/rebound/Spring$PhysicsState;
iput-wide v8, v2, Lcom/facebook/rebound/Spring$PhysicsState;->position:D
.line 364
move-object/from16 v0, p0
iget-object v2, v0, Lcom/facebook/rebound/Spring;->mCurrentState:Lcom/facebook/rebound/Spring$PhysicsState;
iput-wide v6, v2, Lcom/facebook/rebound/Spring$PhysicsState;->velocity:D
.line 366
move-object/from16 v0, p0
iget-wide v2, v0, Lcom/facebook/rebound/Spring;->mTimeAccumulator:D
const-wide/16 v4, 0x0
cmpl-double v2, v2, v4
if-lez v2, :cond_5
.line 367
move-object/from16 v0, p0
iget-wide v2, v0, Lcom/facebook/rebound/Spring;->mTimeAccumulator:D
const-wide v4, 0x3f50624dd2f1a9fcL # 0.001
div-double/2addr v2, v4
move-object/from16 v0, p0
invoke-direct {v0, v2, v3}, Lcom/facebook/rebound/Spring;->interpolate(D)V
.line 373
:cond_5
invoke-virtual/range {p0 .. p0}, Lcom/facebook/rebound/Spring;->isAtRest()Z
move-result v2
if-nez v2, :cond_6
move-object/from16 v0, p0
iget-boolean v2, v0, Lcom/facebook/rebound/Spring;->mOvershootClampingEnabled:Z
if-eqz v2, :cond_b
invoke-virtual/range {p0 .. p0}, Lcom/facebook/rebound/Spring;->isOvershooting()Z
move-result v2
if-eqz v2, :cond_b
.line 375
:cond_6
move-object/from16 v0, p0
iget-wide v2, v0, Lcom/facebook/rebound/Spring;->mEndValue:D
move-object/from16 v0, p0
iput-wide v2, v0, Lcom/facebook/rebound/Spring;->mStartValue:D
.line 376
move-object/from16 v0, p0
iget-object v2, v0, Lcom/facebook/rebound/Spring;->mCurrentState:Lcom/facebook/rebound/Spring$PhysicsState;
move-object/from16 v0, p0
iget-wide v4, v0, Lcom/facebook/rebound/Spring;->mEndValue:D
iput-wide v4, v2, Lcom/facebook/rebound/Spring$PhysicsState;->position:D
.line 377
const-wide/16 v2, 0x0
move-object/from16 v0, p0
invoke-virtual {v0, v2, v3}, Lcom/facebook/rebound/Spring;->setVelocity(D)Lcom/facebook/rebound/Spring;
.line 378
const/4 v2, 0x1
.line 397
:goto_1
const/4 v3, 0x0
.line 398
move-object/from16 v0, p0
iget-boolean v4, v0, Lcom/facebook/rebound/Spring;->mWasAtRest:Z
if-eqz v4, :cond_a
.line 399
const/4 v3, 0x0
move-object/from16 v0, p0
iput-boolean v3, v0, Lcom/facebook/rebound/Spring;->mWasAtRest:Z
.line 400
const/4 v3, 0x1
move v4, v3
.line 402
:goto_2
const/4 v3, 0x0
.line 403
if-eqz v2, :cond_7
.line 404
const/4 v2, 0x1
move-object/from16 v0, p0
iput-boolean v2, v0, Lcom/facebook/rebound/Spring;->mWasAtRest:Z
.line 405
const/4 v2, 0x1
move v3, v2
.line 407
:cond_7
move-object/from16 v0, p0
iget-object v2, v0, Lcom/facebook/rebound/Spring;->mListeners:Ljava/util/concurrent/CopyOnWriteArraySet;
invoke-virtual {v2}, Ljava/util/concurrent/CopyOnWriteArraySet;->iterator()Ljava/util/Iterator;
move-result-object v5
:cond_8
:goto_3
invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_0
invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/facebook/rebound/SpringListener;
.line 409
if-eqz v4, :cond_9
.line 410
move-object/from16 v0, p0
invoke-interface {v2, v0}, Lcom/facebook/rebound/SpringListener;->onSpringActivate(Lcom/facebook/rebound/Spring;)V
.line 414
:cond_9
move-object/from16 v0, p0
invoke-interface {v2, v0}, Lcom/facebook/rebound/SpringListener;->onSpringUpdate(Lcom/facebook/rebound/Spring;)V
.line 417
if-eqz v3, :cond_8
.line 418
move-object/from16 v0, p0
invoke-interface {v2, v0}, Lcom/facebook/rebound/SpringListener;->onSpringAtRest(Lcom/facebook/rebound/Spring;)V
goto :goto_3
:cond_a
move v4, v3
goto :goto_2
:cond_b
move v2, v10
goto :goto_1
.end method
.method public currentValueIsApproximately(D)Z
.locals 5
.prologue
.line 517
invoke-virtual {p0}, Lcom/facebook/rebound/Spring;->getCurrentValue()D
move-result-wide v0
sub-double/2addr v0, p1
invoke-static {v0, v1}, Ljava/lang/Math;->abs(D)D
move-result-wide v0
invoke-virtual {p0}, Lcom/facebook/rebound/Spring;->getRestDisplacementThreshold()D
move-result-wide v2
cmpg-double v0, v0, v2
if-gtz v0, :cond_0
const/4 v0, 0x1
:goto_0
return v0
:cond_0
const/4 v0, 0x0
goto :goto_0
.end method
.method public destroy()V
.locals 1
.prologue
.line 71
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mListeners:Ljava/util/concurrent/CopyOnWriteArraySet;
invoke-virtual {v0}, Ljava/util/concurrent/CopyOnWriteArraySet;->clear()V
.line 72
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mSpringSystem:Lcom/facebook/rebound/BaseSpringSystem;
invoke-virtual {v0, p0}, Lcom/facebook/rebound/BaseSpringSystem;->deregisterSpring(Lcom/facebook/rebound/Spring;)V
.line 73
return-void
.end method
.method public getCurrentDisplacementDistance()D
.locals 2
.prologue
.line 142
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mCurrentState:Lcom/facebook/rebound/Spring$PhysicsState;
invoke-direct {p0, v0}, Lcom/facebook/rebound/Spring;->getDisplacementDistanceForState(Lcom/facebook/rebound/Spring$PhysicsState;)D
move-result-wide v0
return-wide v0
.end method
.method public getCurrentValue()D
.locals 2
.prologue
.line 134
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mCurrentState:Lcom/facebook/rebound/Spring$PhysicsState;
iget-wide v0, v0, Lcom/facebook/rebound/Spring$PhysicsState;->position:D
return-wide v0
.end method
.method public getEndValue()D
.locals 2
.prologue
.line 177
iget-wide v0, p0, Lcom/facebook/rebound/Spring;->mEndValue:D
return-wide v0
.end method
.method public getId()Ljava/lang/String;
.locals 1
.prologue
.line 80
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mId:Ljava/lang/String;
return-object v0
.end method
.method public getRestDisplacementThreshold()D
.locals 2
.prologue
.line 232
iget-wide v0, p0, Lcom/facebook/rebound/Spring;->mDisplacementFromRestThreshold:D
return-wide v0
.end method
.method public getRestSpeedThreshold()D
.locals 2
.prologue
.line 214
iget-wide v0, p0, Lcom/facebook/rebound/Spring;->mRestSpeedThreshold:D
return-wide v0
.end method
.method public getSpringConfig()Lcom/facebook/rebound/SpringConfig;
.locals 1
.prologue
.line 101
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mSpringConfig:Lcom/facebook/rebound/SpringConfig;
return-object v0
.end method
.method public getStartValue()D
.locals 2
.prologue
.line 126
iget-wide v0, p0, Lcom/facebook/rebound/Spring;->mStartValue:D
return-wide v0
.end method
.method public getVelocity()D
.locals 2
.prologue
.line 196
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mCurrentState:Lcom/facebook/rebound/Spring$PhysicsState;
iget-wide v0, v0, Lcom/facebook/rebound/Spring$PhysicsState;->velocity:D
return-wide v0
.end method
.method public isAtRest()Z
.locals 4
.prologue
.line 446
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mCurrentState:Lcom/facebook/rebound/Spring$PhysicsState;
iget-wide v0, v0, Lcom/facebook/rebound/Spring$PhysicsState;->velocity:D
invoke-static {v0, v1}, Ljava/lang/Math;->abs(D)D
move-result-wide v0
iget-wide v2, p0, Lcom/facebook/rebound/Spring;->mRestSpeedThreshold:D
cmpg-double v0, v0, v2
if-gtz v0, :cond_0
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mCurrentState:Lcom/facebook/rebound/Spring$PhysicsState;
.line 447
invoke-direct {p0, v0}, Lcom/facebook/rebound/Spring;->getDisplacementDistanceForState(Lcom/facebook/rebound/Spring$PhysicsState;)D
move-result-wide v0
iget-wide v2, p0, Lcom/facebook/rebound/Spring;->mDisplacementFromRestThreshold:D
cmpg-double v0, v0, v2
if-gtz v0, :cond_0
const/4 v0, 0x1
:goto_0
return v0
:cond_0
const/4 v0, 0x0
goto :goto_0
.end method
.method public isOvershootClampingEnabled()Z
.locals 1
.prologue
.line 250
iget-boolean v0, p0, Lcom/facebook/rebound/Spring;->mOvershootClampingEnabled:Z
return v0
.end method
.method public isOvershooting()Z
.locals 4
.prologue
.line 258
iget-wide v0, p0, Lcom/facebook/rebound/Spring;->mStartValue:D
iget-wide v2, p0, Lcom/facebook/rebound/Spring;->mEndValue:D
cmpg-double v0, v0, v2
if-gez v0, :cond_0
invoke-virtual {p0}, Lcom/facebook/rebound/Spring;->getCurrentValue()D
move-result-wide v0
iget-wide v2, p0, Lcom/facebook/rebound/Spring;->mEndValue:D
cmpl-double v0, v0, v2
if-gtz v0, :cond_1
:cond_0
iget-wide v0, p0, Lcom/facebook/rebound/Spring;->mStartValue:D
iget-wide v2, p0, Lcom/facebook/rebound/Spring;->mEndValue:D
cmpl-double v0, v0, v2
if-lez v0, :cond_2
.line 259
invoke-virtual {p0}, Lcom/facebook/rebound/Spring;->getCurrentValue()D
move-result-wide v0
iget-wide v2, p0, Lcom/facebook/rebound/Spring;->mEndValue:D
cmpg-double v0, v0, v2
if-gez v0, :cond_2
:cond_1
const/4 v0, 0x1
:goto_0
return v0
:cond_2
const/4 v0, 0x0
goto :goto_0
.end method
.method public removeAllListeners()Lcom/facebook/rebound/Spring;
.locals 1
.prologue
.line 505
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mListeners:Ljava/util/concurrent/CopyOnWriteArraySet;
invoke-virtual {v0}, Ljava/util/concurrent/CopyOnWriteArraySet;->clear()V
.line 506
return-object p0
.end method
.method public removeListener(Lcom/facebook/rebound/SpringListener;)Lcom/facebook/rebound/Spring;
.locals 2
.prologue
.line 493
if-nez p1, :cond_0
.line 494
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "listenerToRemove is required"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 496
:cond_0
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mListeners:Ljava/util/concurrent/CopyOnWriteArraySet;
invoke-virtual {v0, p1}, Ljava/util/concurrent/CopyOnWriteArraySet;->remove(Ljava/lang/Object;)Z
.line 497
return-object p0
.end method
.method public setAtRest()Lcom/facebook/rebound/Spring;
.locals 4
.prologue
.line 456
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mCurrentState:Lcom/facebook/rebound/Spring$PhysicsState;
iget-wide v0, v0, Lcom/facebook/rebound/Spring$PhysicsState;->position:D
iput-wide v0, p0, Lcom/facebook/rebound/Spring;->mEndValue:D
.line 457
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mTempState:Lcom/facebook/rebound/Spring$PhysicsState;
iget-object v1, p0, Lcom/facebook/rebound/Spring;->mCurrentState:Lcom/facebook/rebound/Spring$PhysicsState;
iget-wide v2, v1, Lcom/facebook/rebound/Spring$PhysicsState;->position:D
iput-wide v2, v0, Lcom/facebook/rebound/Spring$PhysicsState;->position:D
.line 458
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mCurrentState:Lcom/facebook/rebound/Spring$PhysicsState;
const-wide/16 v2, 0x0
iput-wide v2, v0, Lcom/facebook/rebound/Spring$PhysicsState;->velocity:D
.line 459
return-object p0
.end method
.method public setCurrentValue(D)Lcom/facebook/rebound/Spring;
.locals 3
.prologue
.line 112
iput-wide p1, p0, Lcom/facebook/rebound/Spring;->mStartValue:D
.line 113
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mCurrentState:Lcom/facebook/rebound/Spring$PhysicsState;
iput-wide p1, v0, Lcom/facebook/rebound/Spring$PhysicsState;->position:D
.line 114
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mSpringSystem:Lcom/facebook/rebound/BaseSpringSystem;
invoke-virtual {p0}, Lcom/facebook/rebound/Spring;->getId()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Lcom/facebook/rebound/BaseSpringSystem;->activateSpring(Ljava/lang/String;)V
.line 115
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mListeners:Ljava/util/concurrent/CopyOnWriteArraySet;
invoke-virtual {v0}, Ljava/util/concurrent/CopyOnWriteArraySet;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_0
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_0
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/facebook/rebound/SpringListener;
.line 116
invoke-interface {v0, p0}, Lcom/facebook/rebound/SpringListener;->onSpringUpdate(Lcom/facebook/rebound/Spring;)V
goto :goto_0
.line 118
:cond_0
return-object p0
.end method
.method public setEndValue(D)Lcom/facebook/rebound/Spring;
.locals 3
.prologue
.line 160
iget-wide v0, p0, Lcom/facebook/rebound/Spring;->mEndValue:D
cmpl-double v0, v0, p1
if-nez v0, :cond_1
invoke-virtual {p0}, Lcom/facebook/rebound/Spring;->isAtRest()Z
move-result v0
if-eqz v0, :cond_1
.line 169
:cond_0
return-object p0
.line 163
:cond_1
invoke-virtual {p0}, Lcom/facebook/rebound/Spring;->getCurrentValue()D
move-result-wide v0
iput-wide v0, p0, Lcom/facebook/rebound/Spring;->mStartValue:D
.line 164
iput-wide p1, p0, Lcom/facebook/rebound/Spring;->mEndValue:D
.line 165
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mSpringSystem:Lcom/facebook/rebound/BaseSpringSystem;
invoke-virtual {p0}, Lcom/facebook/rebound/Spring;->getId()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Lcom/facebook/rebound/BaseSpringSystem;->activateSpring(Ljava/lang/String;)V
.line 166
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mListeners:Ljava/util/concurrent/CopyOnWriteArraySet;
invoke-virtual {v0}, Ljava/util/concurrent/CopyOnWriteArraySet;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_0
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_0
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/facebook/rebound/SpringListener;
.line 167
invoke-interface {v0, p0}, Lcom/facebook/rebound/SpringListener;->onSpringEndStateChange(Lcom/facebook/rebound/Spring;)V
goto :goto_0
.end method
.method public setOvershootClampingEnabled(Z)Lcom/facebook/rebound/Spring;
.locals 0
.prologue
.line 241
iput-boolean p1, p0, Lcom/facebook/rebound/Spring;->mOvershootClampingEnabled:Z
.line 242
return-object p0
.end method
.method public setRestDisplacementThreshold(D)Lcom/facebook/rebound/Spring;
.locals 1
.prologue
.line 223
iput-wide p1, p0, Lcom/facebook/rebound/Spring;->mDisplacementFromRestThreshold:D
.line 224
return-object p0
.end method
.method public setRestSpeedThreshold(D)Lcom/facebook/rebound/Spring;
.locals 1
.prologue
.line 205
iput-wide p1, p0, Lcom/facebook/rebound/Spring;->mRestSpeedThreshold:D
.line 206
return-object p0
.end method
.method public setSpringConfig(Lcom/facebook/rebound/SpringConfig;)Lcom/facebook/rebound/Spring;
.locals 2
.prologue
.line 89
if-nez p1, :cond_0
.line 90
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "springConfig is required"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 92
:cond_0
iput-object p1, p0, Lcom/facebook/rebound/Spring;->mSpringConfig:Lcom/facebook/rebound/SpringConfig;
.line 93
return-object p0
.end method
.method public setVelocity(D)Lcom/facebook/rebound/Spring;
.locals 3
.prologue
.line 186
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mCurrentState:Lcom/facebook/rebound/Spring$PhysicsState;
iput-wide p1, v0, Lcom/facebook/rebound/Spring$PhysicsState;->velocity:D
.line 187
iget-object v0, p0, Lcom/facebook/rebound/Spring;->mSpringSystem:Lcom/facebook/rebound/BaseSpringSystem;
invoke-virtual {p0}, Lcom/facebook/rebound/Spring;->getId()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Lcom/facebook/rebound/BaseSpringSystem;->activateSpring(Ljava/lang/String;)V
.line 188
return-object p0
.end method
.method public systemShouldAdvance()Z
.locals 1
.prologue
.line 429
invoke-virtual {p0}, Lcom/facebook/rebound/Spring;->isAtRest()Z
move-result v0
if-eqz v0, :cond_0
invoke-virtual {p0}, Lcom/facebook/rebound/Spring;->wasAtRest()Z
move-result v0
if-nez v0, :cond_1
:cond_0
const/4 v0, 0x1
:goto_0
return v0
:cond_1
const/4 v0, 0x0
goto :goto_0
.end method
.method public wasAtRest()Z
.locals 1
.prologue
.line 438
iget-boolean v0, p0, Lcom/facebook/rebound/Spring;->mWasAtRest:Z
return v0
.end method