DragDamping.smali

.class public Lcom/censivn/C3DEngine/utils/DragDamping;
.super Ljava/lang/Object;
.source "DragDamping.java"


# static fields
.field public static final ANIMATION_DAMPING_SPEED:F = 0.15f

.field public static final ANIMATION_DRAGING_SPEED:F = 0.7f

.field public static final ANIMATION_RETURN_SPEED:F = 0.2f

.field public static final ANIMATION_STANDARD_SPEED:F = 0.1f

.field public static final VALUE_DISTANCE_CRITICAL:F = 0.15f

.field public static final VALUE_MAX_OFFSET:F


# direct methods
.method static constructor <clinit>()V
    .registers 1

    .prologue
    .line 14
    const/high16 v0, 0x43960000    # 300.0f

    invoke-static {v0}, Lcom/censivn/C3DEngine/core/CanvasInfo;->xxhdpi(F)F

    move-result v0

    sput v0, Lcom/censivn/C3DEngine/utils/DragDamping;->VALUE_MAX_OFFSET:F

    return-void
.end method

.method public constructor <init>()V
    .registers 1

    .prologue
    .line 5
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method

.method public static getFlingTargetX(FF)F
    .registers 3

    .prologue
    .line 57
    const/high16 v0, 0x40a00000    # 5.0f

    div-float v0, p1, v0

    add-float/2addr v0, p0

    return v0
.end method

.method public static getFlingTargetY(FF)F
    .registers 3

    .prologue
    .line 63
    const/high16 v0, 0x40400000    # 3.0f

    div-float v0, p1, v0

    sub-float v0, p0, v0

    return v0
.end method

.method public static getTargetValue(FFF)F
    .registers 4

    .prologue
    .line 18
    sget v0, Lcom/censivn/C3DEngine/utils/DragDamping;->VALUE_MAX_OFFSET:F

    invoke-static {p0, p1, p2, v0}, Lcom/censivn/C3DEngine/utils/DragDamping;->getTargetValue(FFFF)F

    move-result v0

    return v0
.end method

.method public static getTargetValue(FFFF)F
    .registers 14

    .prologue
    const-wide v8, 0x400921fb54442d18L    # Math.PI

    const-wide/high16 v6, 0x4000000000000000L    # 2.0

    const/high16 v0, 0x3f800000    # 1.0f

    .line 24
    const/4 v1, 0x0

    cmpl-float v1, p3, v1

    if-eqz v1, :cond_28

    .line 26
    cmpl-float v1, p0, p1

    if-lez v1, :cond_2b

    .line 28
    sub-float v1, p0, p1

    .line 30
    const/high16 v2, 0x40800000    # 4.0f

    mul-float/2addr v2, p3

    div-float/2addr v1, v2

    .line 32
    cmpl-float v2, v1, v0

    if-lez v2, :cond_29

    .line 34
    :goto_1c
    float-to-double v2, p1

    float-to-double v4, p3

    float-to-double v0, v0

    mul-double/2addr v0, v8

    div-double/2addr v0, v6

    invoke-static {v0, v1}, Ljava/lang/Math;->sin(D)D

    move-result-wide v0

    mul-double/2addr v0, v4

    add-double/2addr v0, v2

    double-to-float p0, v0

    .line 50
    :cond_28
    :goto_28
    return p0

    :cond_29
    move v0, v1

    .line 32
    goto :goto_1c

    .line 36
    :cond_2b
    cmpg-float v1, p0, p2

    if-gez v1, :cond_28

    .line 38
    sub-float v1, p2, p0

    .line 40
    const/high16 v2, 0x40000000    # 2.0f

    mul-float/2addr v2, p3

    div-float/2addr v1, v2

    .line 42
    cmpl-float v2, v1, v0

    if-lez v2, :cond_47

    .line 44
    :goto_39
    float-to-double v2, p2

    float-to-double v4, p3

    float-to-double v0, v0

    mul-double/2addr v0, v8

    div-double/2addr v0, v6

    invoke-static {v0, v1}, Ljava/lang/Math;->sin(D)D

    move-result-wide v0

    mul-double/2addr v0, v4

    sub-double v0, v2, v0

    double-to-float p0, v0

    goto :goto_28

    :cond_47
    move v0, v1

    .line 42
    goto :goto_39
.end method