DynamicTree.smali
.class public Lorg/jbox2d/collision/broadphase/DynamicTree;
.super Ljava/lang/Object;
.source "DynamicTree.java"
# interfaces
.implements Lorg/jbox2d/collision/broadphase/BroadPhaseStrategy;
# static fields
.field static final synthetic $assertionsDisabled:Z
.field public static final MAX_STACK_SIZE:I = 0x40
.field public static final NULL_NODE:I = -0x1
# instance fields
.field private final aabb:Lorg/jbox2d/collision/AABB;
.field private final color:Lorg/jbox2d/common/Color3f;
.field private final combinedAABB:Lorg/jbox2d/collision/AABB;
.field private final drawVecs:[Lorg/jbox2d/common/Vec2;
.field private m_freeList:I
.field private m_nodeCapacity:I
.field private m_nodeCount:I
.field private m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.field private m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.field private nodeStack:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.field private nodeStackIndex:I
.field private final r:Lorg/jbox2d/common/Vec2;
.field private final subInput:Lorg/jbox2d/collision/RayCastInput;
.field private final textVec:Lorg/jbox2d/common/Vec2;
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 44
const-class v0, Lorg/jbox2d/collision/broadphase/DynamicTree;
invoke-virtual {v0}, Ljava/lang/Class;->desiredAssertionStatus()Z
move-result v0
if-nez v0, :cond_c
const/4 v0, 0x1
:goto_9
sput-boolean v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
return-void
:cond_c
const/4 v0, 0x0
goto :goto_9
.end method
.method public constructor <init>()V
.registers 7
.prologue
const/4 v1, 0x0
const/16 v3, 0x10
const/4 v2, 0x0
.line 59
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 55
const/4 v0, 0x4
new-array v0, v0, [Lorg/jbox2d/common/Vec2;
iput-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->drawVecs:[Lorg/jbox2d/common/Vec2;
.line 56
const/16 v0, 0x14
new-array v0, v0, [Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iput-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStack:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 57
iput v2, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
.line 192
new-instance v0, Lorg/jbox2d/common/Vec2;
invoke-direct {v0}, Lorg/jbox2d/common/Vec2;-><init>()V
iput-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->r:Lorg/jbox2d/common/Vec2;
.line 193
new-instance v0, Lorg/jbox2d/collision/AABB;
invoke-direct {v0}, Lorg/jbox2d/collision/AABB;-><init>()V
iput-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->aabb:Lorg/jbox2d/collision/AABB;
.line 194
new-instance v0, Lorg/jbox2d/collision/RayCastInput;
invoke-direct {v0}, Lorg/jbox2d/collision/RayCastInput;-><init>()V
iput-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->subInput:Lorg/jbox2d/collision/RayCastInput;
.line 505
new-instance v0, Lorg/jbox2d/collision/AABB;
invoke-direct {v0}, Lorg/jbox2d/collision/AABB;-><init>()V
iput-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->combinedAABB:Lorg/jbox2d/collision/AABB;
.line 864
new-instance v0, Lorg/jbox2d/common/Color3f;
invoke-direct {v0}, Lorg/jbox2d/common/Color3f;-><init>()V
iput-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->color:Lorg/jbox2d/common/Color3f;
.line 865
new-instance v0, Lorg/jbox2d/common/Vec2;
invoke-direct {v0}, Lorg/jbox2d/common/Vec2;-><init>()V
iput-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->textVec:Lorg/jbox2d/common/Vec2;
.line 60
iput-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 61
iput v2, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCount:I
.line 62
iput v3, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
.line 63
new-array v0, v3, [Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iput-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 66
iget v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
add-int/lit8 v0, v0, -0x1
move v3, v0
:goto_4d
if-ltz v3, :cond_77
.line 67
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
new-instance v4, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
invoke-direct {v4, v3}, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;-><init>(I)V
aput-object v4, v0, v3
.line 68
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aget-object v4, v0, v3
iget v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
add-int/lit8 v0, v0, -0x1
if-ne v3, v0, :cond_70
move-object v0, v1
:goto_63
iput-object v0, v4, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 69
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aget-object v0, v0, v3
const/4 v4, -0x1
iput v4, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
.line 66
add-int/lit8 v0, v3, -0x1
move v3, v0
goto :goto_4d
.line 68
:cond_70
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
add-int/lit8 v5, v3, 0x1
aget-object v0, v0, v5
goto :goto_63
.line 71
:cond_77
iput v2, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_freeList:I
move v0, v2
.line 73
:goto_7a
iget-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->drawVecs:[Lorg/jbox2d/common/Vec2;
array-length v1, v1
if-ge v0, v1, :cond_8b
.line 74
iget-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->drawVecs:[Lorg/jbox2d/common/Vec2;
new-instance v2, Lorg/jbox2d/common/Vec2;
invoke-direct {v2}, Lorg/jbox2d/common/Vec2;-><init>()V
aput-object v2, v1, v0
.line 73
add-int/lit8 v0, v0, 0x1
goto :goto_7a
.line 76
:cond_8b
return-void
.end method
.method private final allocateNode()Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.registers 8
.prologue
const/4 v6, 0x0
const/4 v3, -0x1
const/4 v2, 0x0
.line 464
iget v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_freeList:I
if-ne v0, v3, :cond_5d
.line 465
sget-boolean v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v0, :cond_17
iget v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCount:I
iget v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
if-eq v0, v1, :cond_17
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 467
:cond_17
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 468
iget v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
mul-int/lit8 v1, v1, 0x2
iput v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
.line 469
iget v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
new-array v1, v1, [Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iput-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 470
iget-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
array-length v4, v0
invoke-static {v0, v6, v1, v6, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 473
iget v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
add-int/lit8 v0, v0, -0x1
:goto_2f
iget v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCount:I
if-lt v0, v1, :cond_59
.line 474
iget-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
new-instance v4, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
invoke-direct {v4, v0}, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;-><init>(I)V
aput-object v4, v1, v0
.line 475
iget-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aget-object v4, v1, v0
iget v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
add-int/lit8 v1, v1, -0x1
if-ne v0, v1, :cond_52
move-object v1, v2
:goto_47
iput-object v1, v4, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 476
iget-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aget-object v1, v1, v0
iput v3, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
.line 473
add-int/lit8 v0, v0, -0x1
goto :goto_2f
.line 475
:cond_52
iget-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
add-int/lit8 v5, v0, 0x1
aget-object v1, v1, v5
goto :goto_47
.line 478
:cond_59
iget v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCount:I
iput v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_freeList:I
.line 480
:cond_5d
iget v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_freeList:I
.line 481
iget-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aget-object v1, v1, v0
.line 482
iget-object v0, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-eqz v0, :cond_7e
iget-object v0, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iget v0, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
:goto_6b
iput v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_freeList:I
.line 484
iput-object v2, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 485
iput-object v2, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 486
iput-object v2, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 487
iput v6, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
.line 488
iput-object v2, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->userData:Ljava/lang/Object;
.line 489
iget v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCount:I
add-int/lit8 v0, v0, 0x1
iput v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCount:I
.line 490
return-object v1
:cond_7e
move v0, v3
.line 482
goto :goto_6b
.end method
.method private balance(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.registers 9
.prologue
.line 669
sget-boolean v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v0, :cond_c
if-nez p1, :cond_c
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 672
:cond_c
iget-object v0, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-eqz v0, :cond_15
iget v0, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
const/4 v1, 0x2
if-ge v0, v1, :cond_16
.line 788
:cond_15
:goto_15
return-object p1
.line 676
:cond_16
iget-object v1, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 677
iget-object v0, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 678
sget-boolean v2, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v2, :cond_2e
iget v2, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
if-ltz v2, :cond_28
iget v2, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
iget v3, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
if-lt v2, v3, :cond_2e
:cond_28
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 679
:cond_2e
sget-boolean v2, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v2, :cond_42
iget v2, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
if-ltz v2, :cond_3c
iget v2, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
iget v3, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
if-lt v2, v3, :cond_42
:cond_3c
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 684
:cond_42
iget v2, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
iget v3, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
sub-int/2addr v2, v3
.line 687
const/4 v3, 0x1
if-le v2, v3, :cond_126
.line 688
iget-object v2, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 689
iget-object v3, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 692
sget-boolean v4, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v4, :cond_5a
if-nez v2, :cond_5a
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 693
:cond_5a
sget-boolean v4, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v4, :cond_66
if-nez v3, :cond_66
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 694
:cond_66
sget-boolean v4, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v4, :cond_7a
iget v4, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
if-ltz v4, :cond_74
iget v4, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
iget v5, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
if-lt v4, v5, :cond_7a
:cond_74
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 695
:cond_7a
sget-boolean v4, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v4, :cond_8e
iget v4, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
if-ltz v4, :cond_88
iget v4, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
iget v5, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
if-lt v4, v5, :cond_8e
:cond_88
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 698
:cond_8e
iput-object p1, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 699
iget-object v4, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iput-object v4, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 700
iput-object v0, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 703
iget-object v4, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-eqz v4, :cond_f2
.line 704
iget-object v4, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iget-object v4, v4, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-ne v4, p1, :cond_dd
.line 705
iget-object v4, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iput-object v0, v4, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 715
:goto_a4
iget v4, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
iget v5, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
if-le v4, v5, :cond_f5
.line 716
iput-object v2, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 717
iput-object v3, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 718
iput-object p1, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 719
iget-object v4, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v5, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v6, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v4, v5, v6}, Lorg/jbox2d/collision/AABB;->combine(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/collision/AABB;)V
.line 720
iget-object v4, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v5, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v6, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v4, v5, v6}, Lorg/jbox2d/collision/AABB;->combine(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/collision/AABB;)V
.line 722
iget v1, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
iget v3, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
invoke-static {v1, v3}, Lorg/jbox2d/common/MathUtils;->max(II)I
move-result v1
add-int/lit8 v1, v1, 0x1
iput v1, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
.line 723
iget v1, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
iget v2, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
invoke-static {v1, v2}, Lorg/jbox2d/common/MathUtils;->max(II)I
move-result v1
add-int/lit8 v1, v1, 0x1
iput v1, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
:goto_da
move-object p1, v0
.line 735
goto/16 :goto_15
.line 707
:cond_dd
sget-boolean v4, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v4, :cond_ed
iget-object v4, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iget-object v4, v4, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-eq v4, p1, :cond_ed
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 708
:cond_ed
iget-object v4, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iput-object v0, v4, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
goto :goto_a4
.line 711
:cond_f2
iput-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
goto :goto_a4
.line 725
:cond_f5
iput-object v3, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 726
iput-object v2, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 727
iput-object p1, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 728
iget-object v4, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v5, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v6, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v4, v5, v6}, Lorg/jbox2d/collision/AABB;->combine(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/collision/AABB;)V
.line 729
iget-object v4, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v5, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v6, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v4, v5, v6}, Lorg/jbox2d/collision/AABB;->combine(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/collision/AABB;)V
.line 731
iget v1, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
iget v2, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
invoke-static {v1, v2}, Lorg/jbox2d/common/MathUtils;->max(II)I
move-result v1
add-int/lit8 v1, v1, 0x1
iput v1, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
.line 732
iget v1, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
iget v2, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
invoke-static {v1, v2}, Lorg/jbox2d/common/MathUtils;->max(II)I
move-result v1
add-int/lit8 v1, v1, 0x1
iput v1, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
goto :goto_da
.line 739
:cond_126
const/4 v3, -0x1
if-ge v2, v3, :cond_15
.line 740
iget-object v2, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 741
iget-object v3, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 744
sget-boolean v4, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v4, :cond_141
iget v4, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
if-ltz v4, :cond_13b
iget v4, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
iget v5, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
if-lt v4, v5, :cond_141
:cond_13b
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 745
:cond_141
sget-boolean v4, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v4, :cond_155
iget v4, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
if-ltz v4, :cond_14f
iget v4, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
iget v5, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
if-lt v4, v5, :cond_155
:cond_14f
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 748
:cond_155
iput-object p1, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 749
iget-object v4, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iput-object v4, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 750
iput-object v1, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 753
iget-object v4, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-eqz v4, :cond_1b9
.line 754
iget-object v4, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iget-object v4, v4, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-ne v4, p1, :cond_1a4
.line 755
iget-object v4, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iput-object v1, v4, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 765
:goto_16b
iget v4, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
iget v5, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
if-le v4, v5, :cond_1bc
.line 766
iput-object v2, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 767
iput-object v3, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 768
iput-object p1, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 769
iget-object v4, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v5, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v6, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v4, v5, v6}, Lorg/jbox2d/collision/AABB;->combine(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/collision/AABB;)V
.line 770
iget-object v4, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v5, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v6, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v4, v5, v6}, Lorg/jbox2d/collision/AABB;->combine(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/collision/AABB;)V
.line 772
iget v0, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
iget v3, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
invoke-static {v0, v3}, Lorg/jbox2d/common/MathUtils;->max(II)I
move-result v0
add-int/lit8 v0, v0, 0x1
iput v0, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
.line 773
iget v0, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
iget v2, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
invoke-static {v0, v2}, Lorg/jbox2d/common/MathUtils;->max(II)I
move-result v0
add-int/lit8 v0, v0, 0x1
iput v0, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
:goto_1a1
move-object p1, v1
.line 785
goto/16 :goto_15
.line 757
:cond_1a4
sget-boolean v4, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v4, :cond_1b4
iget-object v4, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iget-object v4, v4, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-eq v4, p1, :cond_1b4
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 758
:cond_1b4
iget-object v4, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iput-object v1, v4, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
goto :goto_16b
.line 761
:cond_1b9
iput-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
goto :goto_16b
.line 775
:cond_1bc
iput-object v3, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 776
iput-object v2, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 777
iput-object p1, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 778
iget-object v4, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v5, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v6, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v4, v5, v6}, Lorg/jbox2d/collision/AABB;->combine(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/collision/AABB;)V
.line 779
iget-object v4, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v5, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v6, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v4, v5, v6}, Lorg/jbox2d/collision/AABB;->combine(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/collision/AABB;)V
.line 781
iget v0, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
iget v2, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
invoke-static {v0, v2}, Lorg/jbox2d/common/MathUtils;->max(II)I
move-result v0
add-int/lit8 v0, v0, 0x1
iput v0, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
.line 782
iget v0, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
iget v2, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
invoke-static {v0, v2}, Lorg/jbox2d/common/MathUtils;->max(II)I
move-result v0
add-int/lit8 v0, v0, 0x1
iput v0, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
goto :goto_1a1
.end method
.method private final computeHeight(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)I
.registers 4
.prologue
.line 313
sget-boolean v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v0, :cond_14
iget v0, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
if-ltz v0, :cond_e
iget v0, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
iget v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
if-lt v0, v1, :cond_14
:cond_e
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 315
:cond_14
iget-object v0, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-nez v0, :cond_1a
.line 316
const/4 v0, 0x0
.line 320
:goto_19
return v0
.line 318
:cond_1a
iget-object v0, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
invoke-direct {p0, v0}, Lorg/jbox2d/collision/broadphase/DynamicTree;->computeHeight(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)I
move-result v0
.line 319
iget-object v1, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
invoke-direct {p0, v1}, Lorg/jbox2d/collision/broadphase/DynamicTree;->computeHeight(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)I
move-result v1
.line 320
invoke-static {v0, v1}, Lorg/jbox2d/common/MathUtils;->max(II)I
move-result v0
add-int/lit8 v0, v0, 0x1
goto :goto_19
.end method
.method private final freeNode(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)V
.registers 5
.prologue
const/4 v2, -0x1
.line 497
sget-boolean v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v0, :cond_d
if-nez p1, :cond_d
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 498
:cond_d
sget-boolean v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v0, :cond_1b
iget v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCount:I
if-gtz v0, :cond_1b
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 499
:cond_1b
iget v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_freeList:I
if-eq v0, v2, :cond_34
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iget v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_freeList:I
aget-object v0, v0, v1
:goto_25
iput-object v0, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 500
iput v2, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
.line 501
iget v0, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
iput v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_freeList:I
.line 502
iget v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCount:I
add-int/lit8 v0, v0, -0x1
iput v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCount:I
.line 503
return-void
.line 499
:cond_34
const/4 v0, 0x0
goto :goto_25
.end method
.method private final insertLeaf(I)V
.registers 14
.prologue
const/4 v11, 0x0
const/high16 v10, 0x40000000 # 2.0f
.line 508
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aget-object v5, v0, p1
.line 509
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-nez v0, :cond_12
.line 510
iput-object v5, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 511
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iput-object v11, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 617
:cond_11
return-void
.line 516
:cond_12
iget-object v6, v5, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
.line 517
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 518
:goto_16
iget-object v1, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-eqz v1, :cond_63
.line 520
iget-object v2, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 521
iget-object v3, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 523
iget-object v1, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v1}, Lorg/jbox2d/collision/AABB;->getPerimeter()F
move-result v1
.line 525
iget-object v4, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->combinedAABB:Lorg/jbox2d/collision/AABB;
iget-object v7, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v4, v7, v6}, Lorg/jbox2d/collision/AABB;->combine(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/collision/AABB;)V
.line 526
iget-object v4, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->combinedAABB:Lorg/jbox2d/collision/AABB;
invoke-virtual {v4}, Lorg/jbox2d/collision/AABB;->getPerimeter()F
move-result v4
.line 529
mul-float v7, v10, v4
.line 532
sub-float v1, v4, v1
mul-float v4, v10, v1
.line 536
iget-object v1, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-nez v1, :cond_a8
.line 537
iget-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->combinedAABB:Lorg/jbox2d/collision/AABB;
iget-object v8, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v1, v6, v8}, Lorg/jbox2d/collision/AABB;->combine(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/collision/AABB;)V
.line 538
iget-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->combinedAABB:Lorg/jbox2d/collision/AABB;
invoke-virtual {v1}, Lorg/jbox2d/collision/AABB;->getPerimeter()F
move-result v1
add-float/2addr v1, v4
.line 548
:goto_49
iget-object v8, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-nez v8, :cond_bf
.line 549
iget-object v8, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->combinedAABB:Lorg/jbox2d/collision/AABB;
iget-object v9, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v8, v6, v9}, Lorg/jbox2d/collision/AABB;->combine(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/collision/AABB;)V
.line 550
iget-object v8, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->combinedAABB:Lorg/jbox2d/collision/AABB;
invoke-virtual {v8}, Lorg/jbox2d/collision/AABB;->getPerimeter()F
move-result v8
add-float/2addr v4, v8
.line 559
:goto_5b
cmpg-float v8, v7, v1
if-gez v8, :cond_d6
cmpg-float v7, v7, v4
if-gez v7, :cond_d6
.line 572
:cond_63
iget-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iget v2, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
aget-object v1, v1, v2
iget-object v1, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 573
invoke-direct {p0}, Lorg/jbox2d/collision/broadphase/DynamicTree;->allocateNode()Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
move-result-object v2
.line 574
iput-object v1, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 575
iput-object v11, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->userData:Ljava/lang/Object;
.line 576
iget-object v3, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v4, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v3, v6, v4}, Lorg/jbox2d/collision/AABB;->combine(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/collision/AABB;)V
.line 577
iget v3, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
add-int/lit8 v3, v3, 0x1
iput v3, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
.line 579
if-eqz v1, :cond_e3
.line 581
iget-object v3, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-ne v3, v0, :cond_e0
.line 582
iput-object v2, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 587
:goto_88
iput-object v0, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 588
iput-object v5, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 589
iput-object v2, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 590
iput-object v2, v5, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 601
:goto_90
iget-object v0, v5, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 602
:goto_92
if-eqz v0, :cond_11
.line 603
invoke-direct {p0, v0}, Lorg/jbox2d/collision/broadphase/DynamicTree;->balance(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
move-result-object v0
.line 605
iget-object v1, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 606
iget-object v2, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 608
sget-boolean v3, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v3, :cond_ee
if-nez v1, :cond_ee
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 540
:cond_a8
iget-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->combinedAABB:Lorg/jbox2d/collision/AABB;
iget-object v8, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v1, v6, v8}, Lorg/jbox2d/collision/AABB;->combine(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/collision/AABB;)V
.line 541
iget-object v1, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v1}, Lorg/jbox2d/collision/AABB;->getPerimeter()F
move-result v1
.line 542
iget-object v8, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->combinedAABB:Lorg/jbox2d/collision/AABB;
invoke-virtual {v8}, Lorg/jbox2d/collision/AABB;->getPerimeter()F
move-result v8
.line 543
sub-float v1, v8, v1
add-float/2addr v1, v4
goto :goto_49
.line 552
:cond_bf
iget-object v8, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->combinedAABB:Lorg/jbox2d/collision/AABB;
iget-object v9, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v8, v6, v9}, Lorg/jbox2d/collision/AABB;->combine(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/collision/AABB;)V
.line 553
iget-object v8, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v8}, Lorg/jbox2d/collision/AABB;->getPerimeter()F
move-result v8
.line 554
iget-object v9, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->combinedAABB:Lorg/jbox2d/collision/AABB;
invoke-virtual {v9}, Lorg/jbox2d/collision/AABB;->getPerimeter()F
move-result v9
.line 555
sub-float v8, v9, v8
add-float/2addr v4, v8
goto :goto_5b
.line 564
:cond_d6
cmpg-float v0, v1, v4
if-gez v0, :cond_dd
move-object v0, v2
.line 565
goto/16 :goto_16
:cond_dd
move-object v0, v3
.line 567
goto/16 :goto_16
.line 584
:cond_e0
iput-object v2, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
goto :goto_88
.line 593
:cond_e3
iput-object v0, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 594
iput-object v5, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 595
iput-object v2, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 596
iput-object v2, v5, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 597
iput-object v2, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
goto :goto_90
.line 609
:cond_ee
sget-boolean v3, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v3, :cond_fa
if-nez v2, :cond_fa
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 611
:cond_fa
iget v3, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
iget v4, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
invoke-static {v3, v4}, Lorg/jbox2d/common/MathUtils;->max(II)I
move-result v3
add-int/lit8 v3, v3, 0x1
iput v3, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
.line 612
iget-object v3, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v1, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v2, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v3, v1, v2}, Lorg/jbox2d/collision/AABB;->combine(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/collision/AABB;)V
.line 614
iget-object v0, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
goto :goto_92
.end method
.method private final removeLeaf(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)V
.registers 8
.prologue
const/4 v3, 0x0
.line 620
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-ne p1, v0, :cond_8
.line 621
iput-object v3, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 664
:cond_7
:goto_7
return-void
.line 625
:cond_8
iget-object v2, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 626
iget-object v0, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 628
iget-object v1, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-ne v1, p1, :cond_41
.line 629
iget-object v1, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 634
:goto_12
if-eqz v0, :cond_47
.line 636
iget-object v3, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-ne v3, v2, :cond_44
.line 637
iput-object v1, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 641
:goto_1a
iput-object v0, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 642
invoke-direct {p0, v2}, Lorg/jbox2d/collision/broadphase/DynamicTree;->freeNode(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)V
.line 646
:goto_1f
if-eqz v0, :cond_7
.line 647
invoke-direct {p0, v0}, Lorg/jbox2d/collision/broadphase/DynamicTree;->balance(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
move-result-object v0
.line 649
iget-object v1, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 650
iget-object v2, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 652
iget-object v3, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v4, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v5, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v3, v4, v5}, Lorg/jbox2d/collision/AABB;->combine(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/collision/AABB;)V
.line 653
iget v1, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
iget v2, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
invoke-static {v1, v2}, Lorg/jbox2d/common/MathUtils;->max(II)I
move-result v1
add-int/lit8 v1, v1, 0x1
iput v1, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
.line 655
iget-object v0, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
goto :goto_1f
.line 631
:cond_41
iget-object v1, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
goto :goto_12
.line 639
:cond_44
iput-object v1, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
goto :goto_1a
.line 658
:cond_47
iput-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 659
iput-object v3, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 660
invoke-direct {p0, v2}, Lorg/jbox2d/collision/broadphase/DynamicTree;->freeNode(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)V
goto :goto_7
.end method
.method private validateMetrics(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)V
.registers 7
.prologue
.line 822
if-nez p1, :cond_3
.line 853
:cond_2
:goto_2
return-void
.line 826
:cond_3
iget-object v0, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 827
iget-object v1, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 829
iget-object v2, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-nez v2, :cond_31
.line 830
sget-boolean v2, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v2, :cond_17
if-eqz v0, :cond_17
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 831
:cond_17
sget-boolean v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v0, :cond_23
if-eqz v1, :cond_23
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 832
:cond_23
sget-boolean v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v0, :cond_2
iget v0, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
if-eqz v0, :cond_2
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 836
:cond_31
sget-boolean v2, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v2, :cond_47
if-eqz v0, :cond_41
iget v2, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
if-ltz v2, :cond_41
iget v2, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
iget v3, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
if-lt v2, v3, :cond_47
:cond_41
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 837
:cond_47
sget-boolean v2, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v2, :cond_5d
if-eqz v1, :cond_57
iget v2, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
if-ltz v2, :cond_57
iget v2, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
iget v3, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
if-lt v2, v3, :cond_5d
:cond_57
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 839
:cond_5d
iget v2, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
.line 840
iget v3, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
.line 842
invoke-static {v2, v3}, Lorg/jbox2d/common/MathUtils;->max(II)I
move-result v2
add-int/lit8 v2, v2, 0x1
.line 843
sget-boolean v3, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v3, :cond_75
iget v3, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
if-eq v3, v2, :cond_75
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 845
:cond_75
new-instance v2, Lorg/jbox2d/collision/AABB;
invoke-direct {v2}, Lorg/jbox2d/collision/AABB;-><init>()V
.line 846
iget-object v3, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v4, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v2, v3, v4}, Lorg/jbox2d/collision/AABB;->combine(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/collision/AABB;)V
.line 848
sget-boolean v3, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v3, :cond_97
iget-object v3, v2, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
iget-object v4, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v4, v4, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
invoke-virtual {v3, v4}, Lorg/jbox2d/common/Vec2;->equals(Ljava/lang/Object;)Z
move-result v3
if-nez v3, :cond_97
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 849
:cond_97
sget-boolean v3, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v3, :cond_ad
iget-object v2, v2, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
iget-object v3, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v3, v3, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
invoke-virtual {v2, v3}, Lorg/jbox2d/common/Vec2;->equals(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_ad
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 851
:cond_ad
invoke-direct {p0, v0}, Lorg/jbox2d/collision/broadphase/DynamicTree;->validateMetrics(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)V
.line 852
invoke-direct {p0, v1}, Lorg/jbox2d/collision/broadphase/DynamicTree;->validateMetrics(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)V
goto/16 :goto_2
.end method
.method private validateStructure(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)V
.registers 6
.prologue
.line 792
if-nez p1, :cond_3
.line 819
:cond_2
:goto_2
return-void
.line 795
:cond_3
sget-boolean v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v0, :cond_15
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iget v1, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
aget-object v0, v0, v1
if-eq p1, v0, :cond_15
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 797
:cond_15
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-ne p1, v0, :cond_27
.line 798
sget-boolean v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v0, :cond_27
iget-object v0, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-eqz v0, :cond_27
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 801
:cond_27
iget-object v0, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 802
iget-object v1, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 804
iget-object v2, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-nez v2, :cond_55
.line 805
sget-boolean v2, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v2, :cond_3b
if-eqz v0, :cond_3b
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 806
:cond_3b
sget-boolean v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v0, :cond_47
if-eqz v1, :cond_47
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 807
:cond_47
sget-boolean v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v0, :cond_2
iget v0, p1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
if-eqz v0, :cond_2
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 811
:cond_55
sget-boolean v2, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v2, :cond_6b
if-eqz v0, :cond_65
iget v2, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
if-ltz v2, :cond_65
iget v2, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
iget v3, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
if-lt v2, v3, :cond_6b
:cond_65
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 812
:cond_6b
sget-boolean v2, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v2, :cond_81
if-eqz v1, :cond_7b
iget v2, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
if-ltz v2, :cond_7b
iget v2, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
iget v3, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
if-lt v2, v3, :cond_81
:cond_7b
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 814
:cond_81
sget-boolean v2, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v2, :cond_8f
iget-object v2, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-eq v2, p1, :cond_8f
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 815
:cond_8f
sget-boolean v2, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v2, :cond_9d
iget-object v2, v1, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-eq v2, p1, :cond_9d
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 817
:cond_9d
invoke-direct {p0, v0}, Lorg/jbox2d/collision/broadphase/DynamicTree;->validateStructure(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)V
.line 818
invoke-direct {p0, v1}, Lorg/jbox2d/collision/broadphase/DynamicTree;->validateStructure(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)V
goto/16 :goto_2
.end method
# virtual methods
.method public final computeHeight()I
.registers 2
.prologue
.line 309
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
invoke-direct {p0, v0}, Lorg/jbox2d/collision/broadphase/DynamicTree;->computeHeight(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)I
move-result v0
return v0
.end method
.method public final createProxy(Lorg/jbox2d/collision/AABB;Ljava/lang/Object;)I
.registers 9
.prologue
.line 80
sget-boolean v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v0, :cond_10
invoke-virtual {p1}, Lorg/jbox2d/collision/AABB;->isValid()Z
move-result v0
if-nez v0, :cond_10
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 81
:cond_10
invoke-direct {p0}, Lorg/jbox2d/collision/broadphase/DynamicTree;->allocateNode()Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
move-result-object v0
.line 82
iget v1, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
.line 84
iget-object v2, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
.line 85
iget-object v3, v2, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
iget-object v4, p1, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
iget v4, v4, Lorg/jbox2d/common/Vec2;->x:F
sget v5, Lorg/jbox2d/common/Settings;->aabbExtension:F
sub-float/2addr v4, v5
iput v4, v3, Lorg/jbox2d/common/Vec2;->x:F
.line 86
iget-object v3, v2, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
iget-object v4, p1, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
iget v4, v4, Lorg/jbox2d/common/Vec2;->y:F
sget v5, Lorg/jbox2d/common/Settings;->aabbExtension:F
sub-float/2addr v4, v5
iput v4, v3, Lorg/jbox2d/common/Vec2;->y:F
.line 87
iget-object v3, v2, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
iget-object v4, p1, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
iget v4, v4, Lorg/jbox2d/common/Vec2;->x:F
sget v5, Lorg/jbox2d/common/Settings;->aabbExtension:F
add-float/2addr v4, v5
iput v4, v3, Lorg/jbox2d/common/Vec2;->x:F
.line 88
iget-object v2, v2, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
iget-object v3, p1, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
iget v3, v3, Lorg/jbox2d/common/Vec2;->y:F
sget v4, Lorg/jbox2d/common/Settings;->aabbExtension:F
add-float/2addr v3, v4
iput v3, v2, Lorg/jbox2d/common/Vec2;->y:F
.line 89
iput-object p2, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->userData:Ljava/lang/Object;
.line 91
invoke-direct {p0, v1}, Lorg/jbox2d/collision/broadphase/DynamicTree;->insertLeaf(I)V
.line 93
return v1
.end method
.method public final destroyProxy(I)V
.registers 4
.prologue
.line 98
sget-boolean v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v0, :cond_10
if-ltz p1, :cond_a
iget v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
if-lt p1, v0, :cond_10
:cond_a
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 99
:cond_10
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aget-object v0, v0, p1
.line 100
sget-boolean v1, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v1, :cond_22
iget-object v1, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-eqz v1, :cond_22
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 102
:cond_22
invoke-direct {p0, v0}, Lorg/jbox2d/collision/broadphase/DynamicTree;->removeLeaf(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)V
.line 103
invoke-direct {p0, v0}, Lorg/jbox2d/collision/broadphase/DynamicTree;->freeNode(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)V
.line 104
return-void
.end method
.method public drawTree(Lorg/jbox2d/callbacks/DebugDraw;)V
.registers 5
.prologue
.line 857
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-nez v0, :cond_5
.line 862
:goto_4
return-void
.line 860
:cond_5
invoke-virtual {p0}, Lorg/jbox2d/collision/broadphase/DynamicTree;->computeHeight()I
move-result v0
.line 861
iget-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
const/4 v2, 0x0
invoke-virtual {p0, p1, v1, v2, v0}, Lorg/jbox2d/collision/broadphase/DynamicTree;->drawTree(Lorg/jbox2d/callbacks/DebugDraw;Lorg/jbox2d/collision/broadphase/DynamicTreeNode;II)V
goto :goto_4
.end method
.method public drawTree(Lorg/jbox2d/callbacks/DebugDraw;Lorg/jbox2d/collision/broadphase/DynamicTreeNode;II)V
.registers 10
.prologue
const/high16 v4, 0x3f800000 # 1.0f
.line 868
iget-object v0, p2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->drawVecs:[Lorg/jbox2d/common/Vec2;
invoke-virtual {v0, v1}, Lorg/jbox2d/collision/AABB;->getVertices([Lorg/jbox2d/common/Vec2;)V
.line 870
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->color:Lorg/jbox2d/common/Color3f;
sub-int v1, p4, p3
int-to-float v1, v1
mul-float/2addr v1, v4
int-to-float v2, p4
div-float/2addr v1, v2
sub-int v2, p4, p3
int-to-float v2, v2
mul-float/2addr v2, v4
int-to-float v3, p4
div-float/2addr v2, v3
invoke-virtual {v0, v4, v1, v2}, Lorg/jbox2d/common/Color3f;->set(FFF)V
.line 871
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->drawVecs:[Lorg/jbox2d/common/Vec2;
const/4 v1, 0x4
iget-object v2, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->color:Lorg/jbox2d/common/Color3f;
invoke-virtual {p1, v0, v1, v2}, Lorg/jbox2d/callbacks/DebugDraw;->drawPolygon([Lorg/jbox2d/common/Vec2;ILorg/jbox2d/common/Color3f;)V
.line 873
invoke-virtual {p1}, Lorg/jbox2d/callbacks/DebugDraw;->getViewportTranform()Lorg/jbox2d/common/IViewportTransform;
move-result-object v0
iget-object v1, p2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v1, v1, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
iget-object v2, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->textVec:Lorg/jbox2d/common/Vec2;
invoke-interface {v0, v1, v2}, Lorg/jbox2d/common/IViewportTransform;->getWorldToScreen(Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V
.line 874
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->textVec:Lorg/jbox2d/common/Vec2;
iget v0, v0, Lorg/jbox2d/common/Vec2;->x:F
iget-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->textVec:Lorg/jbox2d/common/Vec2;
iget v1, v1, Lorg/jbox2d/common/Vec2;->y:F
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
iget v3, p2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v2
const-string v3, "-"
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
add-int/lit8 v3, p3, 0x1
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v2
const-string v3, "/"
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2, p4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
iget-object v3, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->color:Lorg/jbox2d/common/Color3f;
invoke-virtual {p1, v0, v1, v2, v3}, Lorg/jbox2d/callbacks/DebugDraw;->drawString(FFLjava/lang/String;Lorg/jbox2d/common/Color3f;)V
.line 876
iget-object v0, p2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-eqz v0, :cond_6c
.line 877
iget-object v0, p2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
add-int/lit8 v1, p3, 0x1
invoke-virtual {p0, p1, v0, v1, p4}, Lorg/jbox2d/collision/broadphase/DynamicTree;->drawTree(Lorg/jbox2d/callbacks/DebugDraw;Lorg/jbox2d/collision/broadphase/DynamicTreeNode;II)V
.line 879
:cond_6c
iget-object v0, p2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-eqz v0, :cond_77
.line 880
iget-object v0, p2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
add-int/lit8 v1, p3, 0x1
invoke-virtual {p0, p1, v0, v1, p4}, Lorg/jbox2d/collision/broadphase/DynamicTree;->drawTree(Lorg/jbox2d/callbacks/DebugDraw;Lorg/jbox2d/collision/broadphase/DynamicTreeNode;II)V
.line 882
:cond_77
return-void
.end method
.method public getAreaRatio()F
.registers 6
.prologue
const/4 v1, 0x0
.line 374
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-nez v0, :cond_6
.line 392
:goto_5
return v1
.line 378
:cond_6
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 379
iget-object v0, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v0}, Lorg/jbox2d/collision/AABB;->getPerimeter()F
move-result v2
.line 382
const/4 v0, 0x0
:goto_f
iget v3, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
if-ge v0, v3, :cond_26
.line 383
iget-object v3, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aget-object v3, v3, v0
.line 384
iget v4, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
if-gez v4, :cond_1e
.line 382
:goto_1b
add-int/lit8 v0, v0, 0x1
goto :goto_f
.line 389
:cond_1e
iget-object v3, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v3}, Lorg/jbox2d/collision/AABB;->getPerimeter()F
move-result v3
add-float/2addr v1, v3
goto :goto_1b
.line 392
:cond_26
div-float/2addr v1, v2
goto :goto_5
.end method
.method public final getFatAABB(I)Lorg/jbox2d/collision/AABB;
.registers 3
.prologue
.line 157
sget-boolean v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v0, :cond_10
if-ltz p1, :cond_a
iget v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
if-lt p1, v0, :cond_10
:cond_a
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 158
:cond_10
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aget-object v0, v0, p1
iget-object v0, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
return-object v0
.end method
.method public getHeight()I
.registers 2
.prologue
.line 346
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-nez v0, :cond_6
.line 347
const/4 v0, 0x0
.line 349
:goto_5
return v0
:cond_6
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iget v0, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
goto :goto_5
.end method
.method public getMaxBalance()I
.registers 7
.prologue
const/4 v4, 0x1
const/4 v1, 0x0
.line 354
move v0, v1
move v2, v1
.line 355
:goto_4
iget v3, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
if-ge v0, v3, :cond_39
.line 356
iget-object v3, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aget-object v5, v3, v0
.line 357
iget v3, v5, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
if-gt v3, v4, :cond_13
.line 355
:goto_10
add-int/lit8 v0, v0, 0x1
goto :goto_4
.line 361
:cond_13
sget-boolean v3, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v3, :cond_26
iget-object v3, v5, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-nez v3, :cond_24
move v3, v4
:goto_1c
if-eqz v3, :cond_26
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
:cond_24
move v3, v1
goto :goto_1c
.line 363
:cond_26
iget-object v3, v5, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 364
iget-object v5, v5, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 365
iget v5, v5, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
iget v3, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
sub-int v3, v5, v3
invoke-static {v3}, Lorg/jbox2d/common/MathUtils;->abs(I)I
move-result v3
.line 366
invoke-static {v2, v3}, Lorg/jbox2d/common/MathUtils;->max(II)I
move-result v2
goto :goto_10
.line 369
:cond_39
return v2
.end method
.method public final getUserData(I)Ljava/lang/Object;
.registers 3
.prologue
.line 151
sget-boolean v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v0, :cond_10
if-ltz p1, :cond_a
iget v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
if-lt p1, v0, :cond_10
:cond_a
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 152
:cond_10
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aget-object v0, v0, p1
iget-object v0, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->userData:Ljava/lang/Object;
return-object v0
.end method
.method public final moveProxy(ILorg/jbox2d/collision/AABB;Lorg/jbox2d/common/Vec2;)Z
.registers 10
.prologue
const/4 v5, 0x0
.line 108
sget-boolean v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v0, :cond_11
invoke-virtual {p2}, Lorg/jbox2d/collision/AABB;->isValid()Z
move-result v0
if-nez v0, :cond_11
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 109
:cond_11
sget-boolean v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v0, :cond_21
if-ltz p1, :cond_1b
iget v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
if-lt p1, v0, :cond_21
:cond_1b
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 110
:cond_21
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aget-object v0, v0, p1
.line 111
sget-boolean v1, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v1, :cond_33
iget-object v1, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-eqz v1, :cond_33
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 113
:cond_33
iget-object v1, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
.line 115
iget-object v2, v1, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
iget v2, v2, Lorg/jbox2d/common/Vec2;->x:F
iget-object v3, p2, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
iget v3, v3, Lorg/jbox2d/common/Vec2;->x:F
cmpg-float v2, v2, v3
if-gtz v2, :cond_67
iget-object v2, v1, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
iget v2, v2, Lorg/jbox2d/common/Vec2;->y:F
iget-object v3, p2, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
iget v3, v3, Lorg/jbox2d/common/Vec2;->y:F
cmpg-float v2, v2, v3
if-gtz v2, :cond_67
iget-object v2, p2, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
iget v2, v2, Lorg/jbox2d/common/Vec2;->x:F
iget-object v3, v1, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
iget v3, v3, Lorg/jbox2d/common/Vec2;->x:F
cmpg-float v2, v2, v3
if-gtz v2, :cond_67
iget-object v2, p2, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
iget v2, v2, Lorg/jbox2d/common/Vec2;->y:F
iget-object v3, v1, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
iget v3, v3, Lorg/jbox2d/common/Vec2;->y:F
cmpg-float v2, v2, v3
if-gtz v2, :cond_67
.line 117
const/4 v0, 0x0
.line 146
:goto_66
return v0
.line 120
:cond_67
invoke-direct {p0, v0}, Lorg/jbox2d/collision/broadphase/DynamicTree;->removeLeaf(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)V
.line 123
iget-object v0, v1, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
.line 124
iget-object v1, v1, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
.line 125
iget-object v2, p2, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
iget v2, v2, Lorg/jbox2d/common/Vec2;->x:F
sget v3, Lorg/jbox2d/common/Settings;->aabbExtension:F
sub-float/2addr v2, v3
iput v2, v0, Lorg/jbox2d/common/Vec2;->x:F
.line 126
iget-object v2, p2, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
iget v2, v2, Lorg/jbox2d/common/Vec2;->y:F
sget v3, Lorg/jbox2d/common/Settings;->aabbExtension:F
sub-float/2addr v2, v3
iput v2, v0, Lorg/jbox2d/common/Vec2;->y:F
.line 127
iget-object v2, p2, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
iget v2, v2, Lorg/jbox2d/common/Vec2;->x:F
sget v3, Lorg/jbox2d/common/Settings;->aabbExtension:F
add-float/2addr v2, v3
iput v2, v1, Lorg/jbox2d/common/Vec2;->x:F
.line 128
iget-object v2, p2, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
iget v2, v2, Lorg/jbox2d/common/Vec2;->y:F
sget v3, Lorg/jbox2d/common/Settings;->aabbExtension:F
add-float/2addr v2, v3
iput v2, v1, Lorg/jbox2d/common/Vec2;->y:F
.line 131
iget v2, p3, Lorg/jbox2d/common/Vec2;->x:F
sget v3, Lorg/jbox2d/common/Settings;->aabbMultiplier:F
mul-float/2addr v2, v3
.line 132
iget v3, p3, Lorg/jbox2d/common/Vec2;->y:F
sget v4, Lorg/jbox2d/common/Settings;->aabbMultiplier:F
mul-float/2addr v3, v4
.line 133
cmpg-float v4, v2, v5
if-gez v4, :cond_b3
.line 134
iget v4, v0, Lorg/jbox2d/common/Vec2;->x:F
add-float/2addr v2, v4
iput v2, v0, Lorg/jbox2d/common/Vec2;->x:F
.line 139
:goto_a5
cmpg-float v2, v3, v5
if-gez v2, :cond_b9
.line 140
iget v1, v0, Lorg/jbox2d/common/Vec2;->y:F
add-float/2addr v1, v3
iput v1, v0, Lorg/jbox2d/common/Vec2;->y:F
.line 145
:goto_ae
invoke-direct {p0, p1}, Lorg/jbox2d/collision/broadphase/DynamicTree;->insertLeaf(I)V
.line 146
const/4 v0, 0x1
goto :goto_66
.line 136
:cond_b3
iget v4, v1, Lorg/jbox2d/common/Vec2;->x:F
add-float/2addr v2, v4
iput v2, v1, Lorg/jbox2d/common/Vec2;->x:F
goto :goto_a5
.line 142
:cond_b9
iget v0, v1, Lorg/jbox2d/common/Vec2;->y:F
add-float/2addr v0, v3
iput v0, v1, Lorg/jbox2d/common/Vec2;->y:F
goto :goto_ae
.end method
.method public final query(Lorg/jbox2d/callbacks/TreeCallback;Lorg/jbox2d/collision/AABB;)V
.registers 8
.prologue
const/4 v4, 0x0
.line 163
sget-boolean v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v0, :cond_11
invoke-virtual {p2}, Lorg/jbox2d/collision/AABB;->isValid()Z
move-result v0
if-nez v0, :cond_11
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 164
:cond_11
iput v4, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
.line 165
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStack:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iget v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
add-int/lit8 v2, v1, 0x1
iput v2, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
iget-object v2, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aput-object v2, v0, v1
.line 167
:cond_1f
:goto_1f
iget v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
if-lez v0, :cond_43
.line 168
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStack:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iget v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
add-int/lit8 v1, v1, -0x1
iput v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
aget-object v0, v0, v1
.line 169
if-eqz v0, :cond_1f
.line 173
iget-object v1, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-static {v1, p2}, Lorg/jbox2d/collision/AABB;->testOverlap(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/collision/AABB;)Z
move-result v1
if-eqz v1, :cond_1f
.line 174
iget-object v1, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-nez v1, :cond_44
.line 175
iget v0, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
invoke-interface {p1, v0}, Lorg/jbox2d/callbacks/TreeCallback;->treeCallback(I)Z
move-result v0
.line 176
if-nez v0, :cond_1f
.line 190
:cond_43
return-void
.line 180
:cond_44
iget-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStack:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
array-length v1, v1
iget v2, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
sub-int/2addr v1, v2
add-int/lit8 v1, v1, -0x2
if-gtz v1, :cond_5f
.line 181
iget-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStack:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
array-length v1, v1
mul-int/lit8 v1, v1, 0x2
new-array v1, v1, [Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 182
iget-object v2, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStack:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iget-object v3, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStack:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
array-length v3, v3
invoke-static {v2, v4, v1, v4, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 183
iput-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStack:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 185
:cond_5f
iget-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStack:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iget v2, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
add-int/lit8 v3, v2, 0x1
iput v3, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
iget-object v3, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aput-object v3, v1, v2
.line 186
iget-object v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStack:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iget v2, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
add-int/lit8 v3, v2, 0x1
iput v3, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
iget-object v0, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aput-object v0, v1, v2
goto :goto_1f
.end method
.method public raycast(Lorg/jbox2d/callbacks/TreeRayCastCallback;Lorg/jbox2d/collision/RayCastInput;)V
.registers 20
.prologue
.line 198
move-object/from16 v0, p2
iget-object v1, v0, Lorg/jbox2d/collision/RayCastInput;->p1:Lorg/jbox2d/common/Vec2;
.line 199
move-object/from16 v0, p2
iget-object v3, v0, Lorg/jbox2d/collision/RayCastInput;->p2:Lorg/jbox2d/common/Vec2;
.line 200
iget v2, v1, Lorg/jbox2d/common/Vec2;->x:F
iget v7, v3, Lorg/jbox2d/common/Vec2;->x:F
iget v4, v1, Lorg/jbox2d/common/Vec2;->y:F
iget v8, v3, Lorg/jbox2d/common/Vec2;->y:F
.line 207
move-object/from16 v0, p0
iget-object v1, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->r:Lorg/jbox2d/common/Vec2;
sub-float v3, v7, v2
iput v3, v1, Lorg/jbox2d/common/Vec2;->x:F
.line 208
move-object/from16 v0, p0
iget-object v1, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->r:Lorg/jbox2d/common/Vec2;
sub-float v3, v8, v4
iput v3, v1, Lorg/jbox2d/common/Vec2;->y:F
.line 209
sget-boolean v1, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v1, :cond_4a
move-object/from16 v0, p0
iget-object v1, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->r:Lorg/jbox2d/common/Vec2;
iget v1, v1, Lorg/jbox2d/common/Vec2;->x:F
move-object/from16 v0, p0
iget-object v3, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->r:Lorg/jbox2d/common/Vec2;
iget v3, v3, Lorg/jbox2d/common/Vec2;->x:F
mul-float/2addr v1, v3
move-object/from16 v0, p0
iget-object v3, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->r:Lorg/jbox2d/common/Vec2;
iget v3, v3, Lorg/jbox2d/common/Vec2;->y:F
move-object/from16 v0, p0
iget-object v5, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->r:Lorg/jbox2d/common/Vec2;
iget v5, v5, Lorg/jbox2d/common/Vec2;->y:F
mul-float/2addr v3, v5
add-float/2addr v1, v3
const/4 v3, 0x0
cmpl-float v1, v1, v3
if-gtz v1, :cond_4a
new-instance v1, Ljava/lang/AssertionError;
invoke-direct {v1}, Ljava/lang/AssertionError;-><init>()V
throw v1
.line 210
:cond_4a
move-object/from16 v0, p0
iget-object v1, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->r:Lorg/jbox2d/common/Vec2;
invoke-virtual {v1}, Lorg/jbox2d/common/Vec2;->normalize()F
.line 211
move-object/from16 v0, p0
iget-object v1, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->r:Lorg/jbox2d/common/Vec2;
iget v1, v1, Lorg/jbox2d/common/Vec2;->x:F
.line 212
move-object/from16 v0, p0
iget-object v3, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->r:Lorg/jbox2d/common/Vec2;
iget v3, v3, Lorg/jbox2d/common/Vec2;->y:F
.line 215
const/high16 v5, -0x40800000 # -1.0f
mul-float v9, v5, v3
.line 216
const/high16 v3, 0x3f800000 # 1.0f
mul-float v10, v3, v1
.line 217
invoke-static {v9}, Lorg/jbox2d/common/MathUtils;->abs(F)F
move-result v11
.line 218
invoke-static {v10}, Lorg/jbox2d/common/MathUtils;->abs(F)F
move-result v12
.line 223
move-object/from16 v0, p2
iget v6, v0, Lorg/jbox2d/collision/RayCastInput;->maxFraction:F
.line 226
move-object/from16 v0, p0
iget-object v13, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->aabb:Lorg/jbox2d/collision/AABB;
.line 232
sub-float v1, v7, v2
mul-float/2addr v1, v6
add-float v3, v1, v2
.line 233
sub-float v1, v8, v4
mul-float/2addr v1, v6
add-float v5, v1, v4
.line 234
iget-object v14, v13, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
cmpg-float v1, v2, v3
if-gez v1, :cond_16f
move v1, v2
:goto_86
iput v1, v14, Lorg/jbox2d/common/Vec2;->x:F
.line 235
iget-object v14, v13, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
cmpg-float v1, v4, v5
if-gez v1, :cond_172
move v1, v4
:goto_8f
iput v1, v14, Lorg/jbox2d/common/Vec2;->y:F
.line 236
iget-object v1, v13, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
cmpl-float v14, v2, v3
if-lez v14, :cond_98
move v3, v2
:cond_98
iput v3, v1, Lorg/jbox2d/common/Vec2;->x:F
.line 237
iget-object v1, v13, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
cmpl-float v3, v4, v5
if-lez v3, :cond_a1
move v5, v4
:cond_a1
iput v5, v1, Lorg/jbox2d/common/Vec2;->y:F
.line 240
const/4 v1, 0x0
move-object/from16 v0, p0
iput v1, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
.line 241
move-object/from16 v0, p0
iget-object v1, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStack:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
move-object/from16 v0, p0
iget v3, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
add-int/lit8 v5, v3, 0x1
move-object/from16 v0, p0
iput v5, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
move-object/from16 v0, p0
iget-object v5, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aput-object v5, v1, v3
:goto_bc
move v1, v6
.line 242
:cond_bd
:goto_bd
move-object/from16 v0, p0
iget v3, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
if-lez v3, :cond_16e
.line 243
move-object/from16 v0, p0
iget-object v3, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStack:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
move-object/from16 v0, p0
iget v5, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
add-int/lit8 v5, v5, -0x1
move-object/from16 v0, p0
iput v5, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
aget-object v3, v3, v5
.line 244
if-eqz v3, :cond_bd
.line 248
iget-object v5, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
.line 249
invoke-static {v5, v13}, Lorg/jbox2d/collision/AABB;->testOverlap(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/collision/AABB;)Z
move-result v6
if-eqz v6, :cond_bd
.line 257
iget-object v6, v5, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
iget v6, v6, Lorg/jbox2d/common/Vec2;->x:F
iget-object v14, v5, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
iget v14, v14, Lorg/jbox2d/common/Vec2;->x:F
add-float/2addr v6, v14
const/high16 v14, 0x3f000000 # 0.5f
mul-float/2addr v6, v14
.line 258
iget-object v14, v5, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
iget v14, v14, Lorg/jbox2d/common/Vec2;->y:F
iget-object v15, v5, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
iget v15, v15, Lorg/jbox2d/common/Vec2;->y:F
add-float/2addr v14, v15
const/high16 v15, 0x3f000000 # 0.5f
mul-float/2addr v14, v15
.line 259
iget-object v15, v5, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
iget v15, v15, Lorg/jbox2d/common/Vec2;->x:F
iget-object v0, v5, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
move-object/from16 v16, v0
move-object/from16 v0, v16
iget v0, v0, Lorg/jbox2d/common/Vec2;->x:F
move/from16 v16, v0
sub-float v15, v15, v16
const/high16 v16, 0x3f000000 # 0.5f
mul-float v15, v15, v16
.line 260
iget-object v0, v5, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
move-object/from16 v16, v0
move-object/from16 v0, v16
iget v0, v0, Lorg/jbox2d/common/Vec2;->y:F
move/from16 v16, v0
iget-object v5, v5, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
iget v5, v5, Lorg/jbox2d/common/Vec2;->y:F
sub-float v5, v16, v5
const/high16 v16, 0x3f000000 # 0.5f
mul-float v5, v5, v16
.line 261
sub-float v6, v2, v6
.line 262
sub-float v14, v4, v14
.line 263
mul-float/2addr v6, v9
mul-float/2addr v14, v10
add-float/2addr v6, v14
invoke-static {v6}, Lorg/jbox2d/common/MathUtils;->abs(F)F
move-result v6
mul-float v14, v11, v15
mul-float/2addr v5, v12
add-float/2addr v5, v14
sub-float v5, v6, v5
.line 264
const/4 v6, 0x0
cmpl-float v5, v5, v6
if-gtz v5, :cond_bd
.line 268
iget-object v5, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-nez v5, :cond_1ae
.line 269
move-object/from16 v0, p0
iget-object v5, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->subInput:Lorg/jbox2d/collision/RayCastInput;
iget-object v5, v5, Lorg/jbox2d/collision/RayCastInput;->p1:Lorg/jbox2d/common/Vec2;
iput v2, v5, Lorg/jbox2d/common/Vec2;->x:F
.line 270
move-object/from16 v0, p0
iget-object v5, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->subInput:Lorg/jbox2d/collision/RayCastInput;
iget-object v5, v5, Lorg/jbox2d/collision/RayCastInput;->p1:Lorg/jbox2d/common/Vec2;
iput v4, v5, Lorg/jbox2d/common/Vec2;->y:F
.line 271
move-object/from16 v0, p0
iget-object v5, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->subInput:Lorg/jbox2d/collision/RayCastInput;
iget-object v5, v5, Lorg/jbox2d/collision/RayCastInput;->p2:Lorg/jbox2d/common/Vec2;
iput v7, v5, Lorg/jbox2d/common/Vec2;->x:F
.line 272
move-object/from16 v0, p0
iget-object v5, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->subInput:Lorg/jbox2d/collision/RayCastInput;
iget-object v5, v5, Lorg/jbox2d/collision/RayCastInput;->p2:Lorg/jbox2d/common/Vec2;
iput v8, v5, Lorg/jbox2d/common/Vec2;->y:F
.line 273
move-object/from16 v0, p0
iget-object v5, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->subInput:Lorg/jbox2d/collision/RayCastInput;
iput v1, v5, Lorg/jbox2d/collision/RayCastInput;->maxFraction:F
.line 275
move-object/from16 v0, p0
iget-object v5, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->subInput:Lorg/jbox2d/collision/RayCastInput;
iget v3, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
move-object/from16 v0, p1
invoke-interface {v0, v5, v3}, Lorg/jbox2d/callbacks/TreeRayCastCallback;->raycastCallback(Lorg/jbox2d/collision/RayCastInput;I)F
move-result v6
.line 277
const/4 v3, 0x0
cmpl-float v3, v6, v3
if-nez v3, :cond_175
.line 305
:cond_16e
return-void
:cond_16f
move v1, v3
.line 234
goto/16 :goto_86
:cond_172
move v1, v5
.line 235
goto/16 :goto_8f
.line 282
:cond_175
const/4 v3, 0x0
cmpl-float v3, v6, v3
if-lez v3, :cond_bd
.line 288
sub-float v1, v7, v2
mul-float/2addr v1, v6
add-float v3, v1, v2
.line 289
sub-float v1, v8, v4
mul-float/2addr v1, v6
add-float v5, v1, v4
.line 290
iget-object v14, v13, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
cmpg-float v1, v2, v3
if-gez v1, :cond_1aa
move v1, v2
:goto_18b
iput v1, v14, Lorg/jbox2d/common/Vec2;->x:F
.line 291
iget-object v14, v13, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;
cmpg-float v1, v4, v5
if-gez v1, :cond_1ac
move v1, v4
:goto_194
iput v1, v14, Lorg/jbox2d/common/Vec2;->y:F
.line 292
iget-object v1, v13, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
cmpl-float v14, v2, v3
if-lez v14, :cond_19d
move v3, v2
:cond_19d
iput v3, v1, Lorg/jbox2d/common/Vec2;->x:F
.line 293
iget-object v1, v13, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;
cmpl-float v3, v4, v5
if-lez v3, :cond_1a6
move v5, v4
:cond_1a6
iput v5, v1, Lorg/jbox2d/common/Vec2;->y:F
goto/16 :goto_bc
:cond_1aa
move v1, v3
.line 290
goto :goto_18b
:cond_1ac
move v1, v5
.line 291
goto :goto_194
.line 296
:cond_1ae
move-object/from16 v0, p0
iget-object v5, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStack:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
array-length v5, v5
move-object/from16 v0, p0
iget v6, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
sub-int/2addr v5, v6
add-int/lit8 v5, v5, -0x2
if-gtz v5, :cond_1df
.line 297
move-object/from16 v0, p0
iget-object v5, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStack:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
array-length v5, v5
mul-int/lit8 v5, v5, 0x2
new-array v5, v5, [Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 298
move-object/from16 v0, p0
iget-object v6, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStack:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
const/4 v14, 0x0
const/4 v15, 0x0
move-object/from16 v0, p0
iget-object v0, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStack:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
move-object/from16 v16, v0
move-object/from16 v0, v16
array-length v0, v0
move/from16 v16, v0
move/from16 v0, v16
invoke-static {v6, v14, v5, v15, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 299
move-object/from16 v0, p0
iput-object v5, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStack:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 301
:cond_1df
move-object/from16 v0, p0
iget-object v5, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStack:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
move-object/from16 v0, p0
iget v6, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
add-int/lit8 v14, v6, 0x1
move-object/from16 v0, p0
iput v14, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
iget-object v14, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aput-object v14, v5, v6
.line 302
move-object/from16 v0, p0
iget-object v5, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStack:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
move-object/from16 v0, p0
iget v6, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
add-int/lit8 v14, v6, 0x1
move-object/from16 v0, p0
iput v14, v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->nodeStackIndex:I
iget-object v3, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aput-object v3, v5, v6
goto/16 :goto_bd
.end method
.method public rebuildBottomUp()V
.registers 15
.prologue
const/4 v13, 0x0
const/4 v7, -0x1
const/4 v1, 0x0
.line 399
iget v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCount:I
new-array v9, v0, [I
move v0, v1
move v2, v1
.line 403
:goto_9
iget v3, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
if-ge v0, v3, :cond_2b
.line 404
iget-object v3, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aget-object v3, v3, v0
iget v3, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
if-gez v3, :cond_18
.line 403
:goto_15
add-int/lit8 v0, v0, 0x1
goto :goto_9
.line 409
:cond_18
iget-object v3, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aget-object v3, v3, v0
.line 410
iget-object v4, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
if-nez v4, :cond_27
.line 411
iput-object v13, v3, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 412
aput v0, v9, v2
.line 413
add-int/lit8 v2, v2, 0x1
goto :goto_15
.line 415
:cond_27
invoke-direct {p0, v3}, Lorg/jbox2d/collision/broadphase/DynamicTree;->freeNode(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)V
goto :goto_15
.line 419
:cond_2b
new-instance v10, Lorg/jbox2d/collision/AABB;
invoke-direct {v10}, Lorg/jbox2d/collision/AABB;-><init>()V
move v8, v2
.line 420
:goto_31
const/4 v0, 0x1
if-le v8, v0, :cond_a1
.line 421
const v6, 0x7f7fffff # Float.MAX_VALUE
move v4, v1
move v0, v7
move v3, v7
.line 423
:goto_3a
if-ge v4, v8, :cond_64
.line 424
iget-object v2, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aget v5, v9, v4
aget-object v2, v2, v5
iget-object v11, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
.line 426
add-int/lit8 v2, v4, 0x1
:goto_46
if-ge v2, v8, :cond_61
.line 427
iget-object v5, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aget v12, v9, v2
aget-object v5, v5, v12
iget-object v5, v5, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
.line 428
invoke-virtual {v10, v11, v5}, Lorg/jbox2d/collision/AABB;->combine(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/collision/AABB;)V
.line 429
invoke-virtual {v10}, Lorg/jbox2d/collision/AABB;->getPerimeter()F
move-result v5
.line 430
cmpg-float v12, v5, v6
if-gez v12, :cond_ad
move v0, v2
move v3, v4
.line 426
:goto_5d
add-int/lit8 v2, v2, 0x1
move v6, v5
goto :goto_46
.line 423
:cond_61
add-int/lit8 v4, v4, 0x1
goto :goto_3a
.line 438
:cond_64
aget v2, v9, v3
.line 439
aget v4, v9, v0
.line 440
iget-object v5, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aget-object v2, v5, v2
.line 441
iget-object v5, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aget-object v4, v5, v4
.line 443
invoke-direct {p0}, Lorg/jbox2d/collision/broadphase/DynamicTree;->allocateNode()Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
move-result-object v5
.line 444
iput-object v2, v5, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child1:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 445
iput-object v4, v5, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->child2:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 446
iget v6, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
iget v11, v4, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
invoke-static {v6, v11}, Lorg/jbox2d/common/MathUtils;->max(II)I
move-result v6
add-int/lit8 v6, v6, 0x1
iput v6, v5, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->height:I
.line 447
iget-object v6, v5, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v11, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
iget-object v12, v4, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->aabb:Lorg/jbox2d/collision/AABB;
invoke-virtual {v6, v11, v12}, Lorg/jbox2d/collision/AABB;->combine(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/collision/AABB;)V
.line 448
iput-object v13, v5, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 450
iput-object v5, v2, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 451
iput-object v5, v4, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 453
add-int/lit8 v2, v8, -0x1
aget v2, v9, v2
aput v2, v9, v0
.line 454
iget v0, v5, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
aput v0, v9, v3
.line 455
add-int/lit8 v2, v8, -0x1
move v8, v2
.line 456
goto :goto_31
.line 458
:cond_a1
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
aget v1, v9, v1
aget-object v0, v0, v1
iput-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 460
invoke-virtual {p0}, Lorg/jbox2d/collision/broadphase/DynamicTree;->validate()V
.line 461
return-void
:cond_ad
move v5, v6
goto :goto_5d
.end method
.method public validate()V
.registers 5
.prologue
.line 327
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
invoke-direct {p0, v0}, Lorg/jbox2d/collision/broadphase/DynamicTree;->validateStructure(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)V
.line 328
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_root:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
invoke-direct {p0, v0}, Lorg/jbox2d/collision/broadphase/DynamicTree;->validateMetrics(Lorg/jbox2d/collision/broadphase/DynamicTreeNode;)V
.line 330
const/4 v1, 0x0
.line 331
iget v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_freeList:I
const/4 v2, -0x1
if-eq v0, v2, :cond_2c
iget-object v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iget v2, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_freeList:I
aget-object v0, v0, v2
.line 332
:goto_16
if-eqz v0, :cond_45
.line 333
sget-boolean v2, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v2, :cond_2e
iget v2, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
if-ltz v2, :cond_26
iget v2, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
iget v3, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
if-lt v2, v3, :cond_2e
:cond_26
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 331
:cond_2c
const/4 v0, 0x0
goto :goto_16
.line 334
:cond_2e
sget-boolean v2, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v2, :cond_40
iget-object v2, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodes:[Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
iget v3, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->id:I
aget-object v2, v2, v3
if-eq v0, v2, :cond_40
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 335
:cond_40
iget-object v0, v0, Lorg/jbox2d/collision/broadphase/DynamicTreeNode;->parent:Lorg/jbox2d/collision/broadphase/DynamicTreeNode;
.line 336
add-int/lit8 v1, v1, 0x1
goto :goto_16
.line 339
:cond_45
sget-boolean v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v0, :cond_59
invoke-virtual {p0}, Lorg/jbox2d/collision/broadphase/DynamicTree;->getHeight()I
move-result v0
invoke-virtual {p0}, Lorg/jbox2d/collision/broadphase/DynamicTree;->computeHeight()I
move-result v2
if-eq v0, v2, :cond_59
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 341
:cond_59
sget-boolean v0, Lorg/jbox2d/collision/broadphase/DynamicTree;->$assertionsDisabled:Z
if-nez v0, :cond_6a
iget v0, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCount:I
add-int/2addr v0, v1
iget v1, p0, Lorg/jbox2d/collision/broadphase/DynamicTree;->m_nodeCapacity:I
if-eq v0, v1, :cond_6a
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
.line 342
:cond_6a
return-void
.end method