Bend.smali
.class public Lcom/censivn/C3DEngine/effects/modifiers/Bend;
.super Lcom/censivn/C3DEngine/effects/core/Modifier;
.source "Bend.java"
# interfaces
.implements Lcom/censivn/C3DEngine/effects/IEffects;
# instance fields
.field private cst:I
.field private frc:F
.field private maa:I
.field private mia:I
.field private ofs:F
# direct methods
.method public constructor <init>(FF)V
.registers 4
.prologue
const/4 v0, 0x0
.line 20
invoke-direct {p0}, Lcom/censivn/C3DEngine/effects/core/Modifier;-><init>()V
.line 15
iput v0, p0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->cst:I
.line 17
iput v0, p0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->maa:I
.line 18
iput v0, p0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->mia:I
.line 21
invoke-virtual {p0, p1}, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->force(F)V
.line 22
invoke-virtual {p0, p2}, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->offset(F)V
.line 23
return-void
.end method
# virtual methods
.method public apply()V
.registers 19
.prologue
.line 60
invoke-virtual/range {p0 .. p0}, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->force()F
move-result v2
const/4 v3, 0x0
cmpl-float v2, v2, v3
if-nez v2, :cond_a
.line 92
:cond_9
return-void
.line 63
:cond_a
move-object/from16 v0, p0
iget v2, v0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->maa:I
if-nez v2, :cond_1c
.line 64
move-object/from16 v0, p0
iget-object v2, v0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->mod:Lcom/censivn/C3DEngine/effects/core/MeshProxy;
invoke-virtual {v2}, Lcom/censivn/C3DEngine/effects/core/MeshProxy;->getMaxAxis()I
move-result v2
move-object/from16 v0, p0
iput v2, v0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->maa:I
.line 65
:cond_1c
move-object/from16 v0, p0
iget v2, v0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->mia:I
if-nez v2, :cond_2e
.line 66
move-object/from16 v0, p0
iget-object v2, v0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->mod:Lcom/censivn/C3DEngine/effects/core/MeshProxy;
invoke-virtual {v2}, Lcom/censivn/C3DEngine/effects/core/MeshProxy;->getMinAxis()I
move-result v2
move-object/from16 v0, p0
iput v2, v0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->mia:I
.line 68
:cond_2e
move-object/from16 v0, p0
iget-object v2, v0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->mod:Lcom/censivn/C3DEngine/effects/core/MeshProxy;
move-object/from16 v0, p0
iget v3, v0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->maa:I
invoke-virtual {v2, v3}, Lcom/censivn/C3DEngine/effects/core/MeshProxy;->getMin(I)F
move-result v2
.line 69
move-object/from16 v0, p0
iget-object v3, v0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->mod:Lcom/censivn/C3DEngine/effects/core/MeshProxy;
move-object/from16 v0, p0
iget v4, v0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->maa:I
invoke-virtual {v3, v4}, Lcom/censivn/C3DEngine/effects/core/MeshProxy;->getMax(I)F
move-result v3
sub-float/2addr v3, v2
.line 71
move-object/from16 v0, p0
iget-object v4, v0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->mod:Lcom/censivn/C3DEngine/effects/core/MeshProxy;
invoke-virtual {v4}, Lcom/censivn/C3DEngine/effects/core/MeshProxy;->getVertices()Ljava/util/ArrayList;
move-result-object v4
.line 72
invoke-virtual {v4}, Ljava/util/ArrayList;->size()I
move-result v5
.line 74
invoke-virtual/range {p0 .. p0}, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->offset()F
move-result v6
mul-float/2addr v6, v3
add-float/2addr v6, v2
.line 75
float-to-double v8, v3
const-wide v10, 0x400921fb54442d18L # Math.PI
div-double/2addr v8, v10
invoke-virtual/range {p0 .. p0}, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->force()F
move-result v2
float-to-double v10, v2
div-double/2addr v8, v10
double-to-float v7, v8
.line 76
const-wide v8, 0x401921fb54442d18L # 6.283185307179586
float-to-double v2, v3
float-to-double v10, v7
const-wide v12, 0x400921fb54442d18L # Math.PI
mul-double/2addr v10, v12
const-wide/high16 v12, 0x4000000000000000L # 2.0
mul-double/2addr v10, v12
div-double/2addr v2, v10
mul-double/2addr v2, v8
double-to-float v8, v2
.line 78
const/4 v2, 0x0
move v3, v2
:goto_7c
if-ge v3, v5, :cond_9
.line 79
invoke-virtual {v4, v3}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/censivn/C3DEngine/effects/core/VertexProxy;
.line 80
move-object/from16 v0, p0
iget v9, v0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->maa:I
invoke-virtual {v2, v9}, Lcom/censivn/C3DEngine/effects/core/VertexProxy;->getRatio(I)F
move-result v9
.line 81
invoke-virtual/range {p0 .. p0}, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->constraint()I
move-result v10
const/4 v11, -0x1
if-ne v10, v11, :cond_9f
invoke-virtual/range {p0 .. p0}, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->offset()F
move-result v10
cmpg-float v10, v9, v10
if-gtz v10, :cond_9f
.line 78
:cond_9b
:goto_9b
add-int/lit8 v2, v3, 0x1
move v3, v2
goto :goto_7c
.line 83
:cond_9f
invoke-virtual/range {p0 .. p0}, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->constraint()I
move-result v10
const/4 v11, 0x1
if-ne v10, v11, :cond_ae
invoke-virtual/range {p0 .. p0}, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->offset()F
move-result v10
cmpl-float v10, v9, v10
if-gez v10, :cond_9b
.line 86
:cond_ae
const-wide v10, 0x3ff921fb54442d18L # 1.5707963267948966
invoke-virtual/range {p0 .. p0}, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->offset()F
move-result v12
mul-float/2addr v12, v8
float-to-double v12, v12
sub-double/2addr v10, v12
mul-float/2addr v9, v8
float-to-double v12, v9
add-double/2addr v10, v12
double-to-float v9, v10
.line 87
float-to-double v10, v9
invoke-static {v10, v11}, Ljava/lang/Math;->sin(D)D
move-result-wide v10
move-object/from16 v0, p0
iget v12, v0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->mia:I
invoke-virtual {v2, v12}, Lcom/censivn/C3DEngine/effects/core/VertexProxy;->getValue(I)F
move-result v12
add-float/2addr v12, v7
float-to-double v12, v12
mul-double/2addr v10, v12
float-to-double v12, v7
sub-double/2addr v10, v12
double-to-float v10, v10
.line 88
float-to-double v12, v6
float-to-double v14, v9
invoke-static {v14, v15}, Ljava/lang/Math;->cos(D)D
move-result-wide v14
move-object/from16 v0, p0
iget v9, v0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->mia:I
invoke-virtual {v2, v9}, Lcom/censivn/C3DEngine/effects/core/VertexProxy;->getValue(I)F
move-result v9
add-float/2addr v9, v7
float-to-double v0, v9
move-wide/from16 v16, v0
mul-double v14, v14, v16
sub-double/2addr v12, v14
double-to-float v9, v12
.line 89
move-object/from16 v0, p0
iget v11, v0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->mia:I
invoke-virtual {v2, v11, v10}, Lcom/censivn/C3DEngine/effects/core/VertexProxy;->setValue(IF)V
.line 90
move-object/from16 v0, p0
iget v10, v0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->maa:I
invoke-virtual {v2, v10, v9}, Lcom/censivn/C3DEngine/effects/core/VertexProxy;->setValue(IF)V
goto :goto_9b
.end method
.method public bendAxis(I)V
.registers 2
.prologue
.line 52
iput p1, p0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->maa:I
.line 53
return-void
.end method
.method public constraint()I
.registers 2
.prologue
.line 48
iget v0, p0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->cst:I
return v0
.end method
.method public constraint(I)V
.registers 2
.prologue
.line 44
iput p1, p0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->cst:I
.line 45
return-void
.end method
.method public force()F
.registers 2
.prologue
.line 30
iget v0, p0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->frc:F
return v0
.end method
.method public force(F)V
.registers 2
.prologue
.line 26
iput p1, p0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->frc:F
.line 27
return-void
.end method
.method public offset()F
.registers 2
.prologue
.line 40
iget v0, p0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->ofs:F
return v0
.end method
.method public offset(F)V
.registers 3
.prologue
.line 34
iput p1, p0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->ofs:F
.line 35
const/4 v0, 0x0
invoke-static {v0, p1}, Ljava/lang/Math;->max(FF)F
move-result v0
iput v0, p0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->ofs:F
.line 36
const/high16 v0, 0x3f800000 # 1.0f
invoke-static {v0, p1}, Ljava/lang/Math;->min(FF)F
move-result v0
iput v0, p0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->ofs:F
.line 37
return-void
.end method
.method public pointAxis(I)V
.registers 2
.prologue
.line 56
iput p1, p0, Lcom/censivn/C3DEngine/effects/modifiers/Bend;->mia:I
.line 57
return-void
.end method