ParticleSystem$UpdateBodyContactsCallback.smali
.class Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;
.super Ljava/lang/Object;
.source "ParticleSystem.java"
# interfaces
.implements Lorg/jbox2d/callbacks/QueryCallback;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lorg/jbox2d/particle/ParticleSystem;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x8
name = "UpdateBodyContactsCallback"
.end annotation
# instance fields
.field system:Lorg/jbox2d/particle/ParticleSystem;
.field private final tempVec:Lorg/jbox2d/common/Vec2;
# direct methods
.method constructor <init>()V
.registers 2
.prologue
.line 1994
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 1997
new-instance v0, Lorg/jbox2d/common/Vec2;
invoke-direct {v0}, Lorg/jbox2d/common/Vec2;-><init>()V
iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->tempVec:Lorg/jbox2d/common/Vec2;
return-void
.end method
# virtual methods
.method public reportFixture(Lorg/jbox2d/dynamics/Fixture;)Z
.registers 26
.prologue
.line 2001
invoke-virtual/range {p1 .. p1}, Lorg/jbox2d/dynamics/Fixture;->isSensor()Z
move-result v2
if-eqz v2, :cond_8
.line 2002
const/4 v2, 0x1
.line 2069
:goto_7
return v2
.line 2004
:cond_8
invoke-virtual/range {p1 .. p1}, Lorg/jbox2d/dynamics/Fixture;->getShape()Lorg/jbox2d/collision/shapes/Shape;
move-result-object v4
.line 2005
invoke-virtual/range {p1 .. p1}, Lorg/jbox2d/dynamics/Fixture;->getBody()Lorg/jbox2d/dynamics/Body;
move-result-object v9
.line 2006
invoke-virtual {v9}, Lorg/jbox2d/dynamics/Body;->getWorldCenter()Lorg/jbox2d/common/Vec2;
move-result-object v10
.line 2007
invoke-virtual {v9}, Lorg/jbox2d/dynamics/Body;->getMass()F
move-result v2
.line 2008
invoke-virtual {v9}, Lorg/jbox2d/dynamics/Body;->getInertia()F
move-result v3
invoke-virtual {v9}, Lorg/jbox2d/dynamics/Body;->getLocalCenter()Lorg/jbox2d/common/Vec2;
move-result-object v5
invoke-virtual {v5}, Lorg/jbox2d/common/Vec2;->lengthSquared()F
move-result v5
mul-float/2addr v5, v2
sub-float/2addr v3, v5
.line 2009
const/4 v5, 0x0
cmpl-float v5, v2, v5
if-lez v5, :cond_1fc
const/high16 v5, 0x3f800000 # 1.0f
div-float v2, v5, v2
move v8, v2
.line 2010
:goto_30
const/4 v2, 0x0
cmpl-float v2, v3, v2
if-lez v2, :cond_200
const/high16 v2, 0x3f800000 # 1.0f
div-float/2addr v2, v3
move v3, v2
.line 2011
:goto_39
invoke-virtual {v4}, Lorg/jbox2d/collision/shapes/Shape;->getChildCount()I
move-result v11
.line 2012
const/4 v2, 0x0
move v7, v2
:goto_3f
if-ge v7, v11, :cond_219
.line 2013
move-object/from16 v0, p1
invoke-virtual {v0, v7}, Lorg/jbox2d/dynamics/Fixture;->getAABB(I)Lorg/jbox2d/collision/AABB;
move-result-object v2
.line 2014
iget-object v4, v2, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
iget v4, v4, Lorg/jbox2d/common/Vec2;->x:F
move-object/from16 v0, p0
iget-object v5, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget v5, v5, Lorg/jbox2d/particle/ParticleSystem;->m_particleDiameter:F
sub-float v12, v4, v5
.line 2015
iget-object v4, v2, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
iget v4, v4, Lorg/jbox2d/common/Vec2;->y:F
move-object/from16 v0, p0
iget-object v5, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget v5, v5, Lorg/jbox2d/particle/ParticleSystem;->m_particleDiameter:F
sub-float v13, v4, v5
.line 2016
iget-object v4, v2, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
iget v4, v4, Lorg/jbox2d/common/Vec2;->x:F
move-object/from16 v0, p0
iget-object v5, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget v5, v5, Lorg/jbox2d/particle/ParticleSystem;->m_particleDiameter:F
add-float v14, v4, v5
.line 2017
iget-object v2, v2, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
iget v2, v2, Lorg/jbox2d/common/Vec2;->y:F
move-object/from16 v0, p0
iget-object v4, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget v4, v4, Lorg/jbox2d/particle/ParticleSystem;->m_particleDiameter:F
add-float v15, v2, v4
.line 2018
move-object/from16 v0, p0
iget-object v2, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget-object v2, v2, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;
move-object/from16 v0, p0
iget-object v4, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget v4, v4, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I
move-object/from16 v0, p0
iget-object v5, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget v5, v5, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDiameter:F
mul-float/2addr v5, v12
move-object/from16 v0, p0
iget-object v6, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget v6, v6, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDiameter:F
mul-float/2addr v6, v13
invoke-static {v5, v6}, Lorg/jbox2d/particle/ParticleSystem;->computeTag(FF)J
move-result-wide v16
move-wide/from16 v0, v16
# invokes: Lorg/jbox2d/particle/ParticleSystem;->lowerBound([Lorg/jbox2d/particle/ParticleSystem$Proxy;IJ)I
invoke-static {v2, v4, v0, v1}, Lorg/jbox2d/particle/ParticleSystem;->access$100([Lorg/jbox2d/particle/ParticleSystem$Proxy;IJ)I
move-result v2
.line 2024
move-object/from16 v0, p0
iget-object v4, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget-object v4, v4, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;
move-object/from16 v0, p0
iget-object v5, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget v5, v5, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I
move-object/from16 v0, p0
iget-object v6, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget v6, v6, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDiameter:F
mul-float/2addr v6, v14
move-object/from16 v0, p0
iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
move-object/from16 v16, v0
move-object/from16 v0, v16
iget v0, v0, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDiameter:F
move/from16 v16, v0
mul-float v16, v16, v15
move/from16 v0, v16
invoke-static {v6, v0}, Lorg/jbox2d/particle/ParticleSystem;->computeTag(FF)J
move-result-wide v16
move-wide/from16 v0, v16
# invokes: Lorg/jbox2d/particle/ParticleSystem;->upperBound([Lorg/jbox2d/particle/ParticleSystem$Proxy;IJ)I
invoke-static {v4, v5, v0, v1}, Lorg/jbox2d/particle/ParticleSystem;->access$200([Lorg/jbox2d/particle/ParticleSystem$Proxy;IJ)I
move-result v16
move v6, v2
.line 2031
:goto_c9
move/from16 v0, v16
if-eq v6, v0, :cond_214
.line 2032
move-object/from16 v0, p0
iget-object v2, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget-object v2, v2, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;
aget-object v2, v2, v6
iget v0, v2, Lorg/jbox2d/particle/ParticleSystem$Proxy;->index:I
move/from16 v17, v0
.line 2033
move-object/from16 v0, p0
iget-object v2, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget-object v2, v2, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;
iget-object v2, v2, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;
check-cast v2, [Lorg/jbox2d/common/Vec2;
aget-object v5, v2, v17
.line 2034
iget v2, v5, Lorg/jbox2d/common/Vec2;->x:F
cmpg-float v2, v12, v2
if-gtz v2, :cond_1f7
iget v2, v5, Lorg/jbox2d/common/Vec2;->x:F
cmpg-float v2, v2, v14
if-gtz v2, :cond_1f7
iget v2, v5, Lorg/jbox2d/common/Vec2;->y:F
cmpg-float v2, v13, v2
if-gtz v2, :cond_1f7
iget v2, v5, Lorg/jbox2d/common/Vec2;->y:F
cmpg-float v2, v2, v15
if-gtz v2, :cond_1f7
.line 2037
move-object/from16 v0, p0
iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->tempVec:Lorg/jbox2d/common/Vec2;
move-object/from16 v18, v0
.line 2038
move-object/from16 v0, p1
move-object/from16 v1, v18
invoke-virtual {v0, v5, v7, v1}, Lorg/jbox2d/dynamics/Fixture;->computeDistance(Lorg/jbox2d/common/Vec2;ILorg/jbox2d/common/Vec2;)F
move-result v19
.line 2039
move-object/from16 v0, p0
iget-object v2, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget v2, v2, Lorg/jbox2d/particle/ParticleSystem;->m_particleDiameter:F
cmpg-float v2, v19, v2
if-gez v2, :cond_1f7
.line 2040
move-object/from16 v0, p0
iget-object v2, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget-object v2, v2, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;
iget-object v2, v2, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->data:[I
aget v2, v2, v17
and-int/lit8 v2, v2, 0x4
if-eqz v2, :cond_204
const/4 v2, 0x0
move v4, v2
.line 2043
:goto_125
iget v2, v5, Lorg/jbox2d/common/Vec2;->x:F
iget v0, v10, Lorg/jbox2d/common/Vec2;->x:F
move/from16 v20, v0
sub-float v2, v2, v20
.line 2044
iget v5, v5, Lorg/jbox2d/common/Vec2;->y:F
iget v0, v10, Lorg/jbox2d/common/Vec2;->y:F
move/from16 v20, v0
sub-float v5, v5, v20
.line 2045
move-object/from16 v0, v18
iget v0, v0, Lorg/jbox2d/common/Vec2;->y:F
move/from16 v20, v0
mul-float v2, v2, v20
move-object/from16 v0, v18
iget v0, v0, Lorg/jbox2d/common/Vec2;->x:F
move/from16 v20, v0
mul-float v5, v5, v20
sub-float v20, v2, v5
.line 2046
move-object/from16 v0, p0
iget-object v2, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget v2, v2, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactCount:I
move-object/from16 v0, p0
iget-object v5, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget v5, v5, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactCapacity:I
if-lt v2, v5, :cond_196
.line 2047
move-object/from16 v0, p0
iget-object v2, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget v0, v2, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactCapacity:I
move/from16 v21, v0
.line 2048
move-object/from16 v0, p0
iget-object v2, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget v2, v2, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactCount:I
if-eqz v2, :cond_20f
move-object/from16 v0, p0
iget-object v2, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget v2, v2, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactCount:I
mul-int/lit8 v2, v2, 0x2
move v5, v2
.line 2052
:goto_16e
move-object/from16 v0, p0
iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
move-object/from16 v22, v0
const-class v2, Lorg/jbox2d/particle/ParticleBodyContact;
move-object/from16 v0, p0
iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
move-object/from16 v23, v0
move-object/from16 v0, v23
iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactBuffer:[Lorg/jbox2d/particle/ParticleBodyContact;
move-object/from16 v23, v0
move-object/from16 v0, v23
move/from16 v1, v21
invoke-static {v2, v0, v1, v5}, Lorg/jbox2d/common/BufferUtils;->reallocateBuffer(Ljava/lang/Class;[Ljava/lang/Object;II)[Ljava/lang/Object;
move-result-object v2
check-cast v2, [Lorg/jbox2d/particle/ParticleBodyContact;
move-object/from16 v0, v22
iput-object v2, v0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactBuffer:[Lorg/jbox2d/particle/ParticleBodyContact;
.line 2055
move-object/from16 v0, p0
iget-object v2, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iput v5, v2, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactCapacity:I
.line 2057
:cond_196
move-object/from16 v0, p0
iget-object v2, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget-object v2, v2, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactBuffer:[Lorg/jbox2d/particle/ParticleBodyContact;
move-object/from16 v0, p0
iget-object v5, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget v5, v5, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactCount:I
aget-object v2, v2, v5
.line 2058
move/from16 v0, v17
iput v0, v2, Lorg/jbox2d/particle/ParticleBodyContact;->index:I
.line 2059
iput-object v9, v2, Lorg/jbox2d/particle/ParticleBodyContact;->body:Lorg/jbox2d/dynamics/Body;
.line 2060
const/high16 v5, 0x3f800000 # 1.0f
move-object/from16 v0, p0
iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
move-object/from16 v17, v0
move-object/from16 v0, v17
iget v0, v0, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDiameter:F
move/from16 v17, v0
mul-float v17, v17, v19
sub-float v5, v5, v17
iput v5, v2, Lorg/jbox2d/particle/ParticleBodyContact;->weight:F
.line 2061
iget-object v5, v2, Lorg/jbox2d/particle/ParticleBodyContact;->normal:Lorg/jbox2d/common/Vec2;
move-object/from16 v0, v18
iget v0, v0, Lorg/jbox2d/common/Vec2;->x:F
move/from16 v17, v0
move/from16 v0, v17
neg-float v0, v0
move/from16 v17, v0
move/from16 v0, v17
iput v0, v5, Lorg/jbox2d/common/Vec2;->x:F
.line 2062
iget-object v5, v2, Lorg/jbox2d/particle/ParticleBodyContact;->normal:Lorg/jbox2d/common/Vec2;
move-object/from16 v0, v18
iget v0, v0, Lorg/jbox2d/common/Vec2;->y:F
move/from16 v17, v0
move/from16 v0, v17
neg-float v0, v0
move/from16 v17, v0
move/from16 v0, v17
iput v0, v5, Lorg/jbox2d/common/Vec2;->y:F
.line 2063
const/high16 v5, 0x3f800000 # 1.0f
add-float/2addr v4, v8
mul-float v17, v3, v20
mul-float v17, v17, v20
add-float v4, v4, v17
div-float v4, v5, v4
iput v4, v2, Lorg/jbox2d/particle/ParticleBodyContact;->mass:F
.line 2064
move-object/from16 v0, p0
iget-object v2, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
iget v4, v2, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactCount:I
add-int/lit8 v4, v4, 0x1
iput v4, v2, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactCount:I
.line 2031
:cond_1f7
add-int/lit8 v2, v6, 0x1
move v6, v2
goto/16 :goto_c9
.line 2009
:cond_1fc
const/4 v2, 0x0
move v8, v2
goto/16 :goto_30
.line 2010
:cond_200
const/4 v2, 0x0
move v3, v2
goto/16 :goto_39
.line 2040
:cond_204
move-object/from16 v0, p0
iget-object v2, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;
invoke-virtual {v2}, Lorg/jbox2d/particle/ParticleSystem;->getParticleInvMass()F
move-result v2
move v4, v2
goto/16 :goto_125
.line 2048
:cond_20f
const/16 v2, 0x100
move v5, v2
goto/16 :goto_16e
.line 2012
:cond_214
add-int/lit8 v2, v7, 0x1
move v7, v2
goto/16 :goto_3f
.line 2069
:cond_219
const/4 v2, 0x1
goto/16 :goto_7
.end method