Max3DSParser.smali
.class public Lcom/censivn/C3DEngine/parser/Max3DSParser;
.super Lcom/censivn/C3DEngine/parser/AParser;
.source "Max3DSParser.java"
# interfaces
.implements Lcom/censivn/C3DEngine/parser/IParser;
# instance fields
.field private final FACES:I
.field private final IDENTIFIER_3DS:I
.field private final MATERIAL:I
.field private final MESH_BLOCK:I
.field private final OBJECT_BLOCK:I
.field private final TEXCOORD:I
.field private final TEX_FILENAME:I
.field private final TEX_MAP:I
.field private final TEX_NAME:I
.field private final TRIMESH:I
.field private final TRI_MATERIAL:I
.field private final VERTICES:I
.field private chunkEndOffset:I
.field private chunkID:I
.field private context:Lcom/censivn/C3DEngine/Engine;
.field private currentObjName:Ljava/lang/String;
.field private endReached:Z
# direct methods
.method public constructor <init>(Landroid/content/res/Resources;Ljava/lang/String;Z)V
.registers 5
.prologue
.line 39
invoke-static {p3}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v0
invoke-direct {p0, p1, p2, v0}, Lcom/censivn/C3DEngine/parser/AParser;-><init>(Landroid/content/res/Resources;Ljava/lang/String;Ljava/lang/Boolean;)V
.line 18
const/16 v0, 0x4d4d
iput v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->IDENTIFIER_3DS:I
.line 19
const/16 v0, 0x3d3d
iput v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->MESH_BLOCK:I
.line 20
const/16 v0, 0x4000
iput v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->OBJECT_BLOCK:I
.line 21
const/16 v0, 0x4100
iput v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->TRIMESH:I
.line 22
const/16 v0, 0x4130
iput v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->TRI_MATERIAL:I
.line 23
const/16 v0, 0x4110
iput v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->VERTICES:I
.line 24
const/16 v0, 0x4120
iput v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->FACES:I
.line 25
const/16 v0, 0x4140
iput v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->TEXCOORD:I
.line 26
const v0, 0xa200
iput v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->TEX_MAP:I
.line 27
const v0, 0xa000
iput v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->TEX_NAME:I
.line 28
const v0, 0xa300
iput v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->TEX_FILENAME:I
.line 29
const v0, 0xafff
iput v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->MATERIAL:I
.line 40
return-void
.end method
.method private readChunk(Lcom/censivn/C3DEngine/Engine;Ljava/io/InputStream;)V
.registers 8
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.prologue
const/4 v0, 0x0
.line 78
invoke-direct {p0, p2}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readHeader(Ljava/io/InputStream;)V
.line 80
iget v1, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->chunkID:I
sparse-switch v1, :sswitch_data_c2
.line 137
invoke-direct {p0, p2}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->skipRead(Ljava/io/InputStream;)V
.line 139
:cond_c
:goto_c
:sswitch_c
return-void
.line 84
:sswitch_d
invoke-virtual {p0, p2}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readString(Ljava/io/InputStream;)Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->currentObjName:Ljava/lang/String;
.line 85
const-string v0, "Censivn3D"
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Parsing object "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
iget-object v2, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->currentObjName:Ljava/lang/String;
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_c
.line 88
:sswitch_2e
iget-boolean v1, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->firstObject:Z
if-eqz v1, :cond_3b
.line 89
iget-object v1, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->co:Lcom/censivn/C3DEngine/parser/ParseObjectData;
iget-object v2, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->currentObjName:Ljava/lang/String;
iput-object v2, v1, Lcom/censivn/C3DEngine/parser/ParseObjectData;->name:Ljava/lang/String;
.line 90
iput-boolean v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->firstObject:Z
goto :goto_c
.line 92
:cond_3b
new-instance v0, Lcom/censivn/C3DEngine/parser/ParseObjectData;
invoke-direct {v0}, Lcom/censivn/C3DEngine/parser/ParseObjectData;-><init>()V
iput-object v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->co:Lcom/censivn/C3DEngine/parser/ParseObjectData;
.line 93
iget-object v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->co:Lcom/censivn/C3DEngine/parser/ParseObjectData;
iget-object v1, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->currentObjName:Ljava/lang/String;
iput-object v1, v0, Lcom/censivn/C3DEngine/parser/ParseObjectData;->name:Ljava/lang/String;
.line 94
iget-object v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->parseObjects:Ljava/util/ArrayList;
iget-object v1, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->co:Lcom/censivn/C3DEngine/parser/ParseObjectData;
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
goto :goto_c
.line 98
:sswitch_50
invoke-direct {p0, p2}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readVertices(Ljava/io/InputStream;)V
goto :goto_c
.line 101
:sswitch_54
invoke-direct {p0, p2}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readFaces(Ljava/io/InputStream;)V
goto :goto_c
.line 104
:sswitch_58
invoke-direct {p0, p2}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readTexCoords(Ljava/io/InputStream;)V
goto :goto_c
.line 107
:sswitch_5c
invoke-virtual {p0, p2}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readString(Ljava/io/InputStream;)Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->currentMaterialKey:Ljava/lang/String;
goto :goto_c
.line 110
:sswitch_63
invoke-virtual {p0, p2}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readString(Ljava/io/InputStream;)Ljava/lang/String;
move-result-object v1
.line 111
new-instance v2, Ljava/lang/StringBuffer;
iget-object v3, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->packageID:Ljava/lang/String;
invoke-direct {v2, v3}, Ljava/lang/StringBuffer;-><init>(Ljava/lang/String;)V
.line 112
const-string v3, ":drawable/"
invoke-virtual {v2, v3}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
.line 114
new-instance v3, Ljava/lang/StringBuffer;
invoke-virtual {v1}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;
move-result-object v1
invoke-direct {v3, v1}, Ljava/lang/StringBuffer;-><init>(Ljava/lang/String;)V
.line 115
const-string v1, "."
invoke-virtual {v3, v1}, Ljava/lang/StringBuffer;->lastIndexOf(Ljava/lang/String;)I
move-result v1
.line 116
const/4 v4, -0x1
if-le v1, v4, :cond_9e
.line 117
invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuffer;->substring(II)Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
.line 121
:goto_8c
iget-object v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->textureAtlas:Lcom/censivn/C3DEngine/parser/AParser$TextureAtlas;
new-instance v1, Lcom/censivn/C3DEngine/parser/AParser$BitmapAsset;
iget-object v3, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->currentMaterialKey:Ljava/lang/String;
invoke-virtual {v2}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;
move-result-object v2
invoke-direct {v1, p0, v3, v2}, Lcom/censivn/C3DEngine/parser/AParser$BitmapAsset;-><init>(Lcom/censivn/C3DEngine/parser/AParser;Ljava/lang/String;Ljava/lang/String;)V
invoke-virtual {v0, p1, v1}, Lcom/censivn/C3DEngine/parser/AParser$TextureAtlas;->addBitmapAsset(Lcom/censivn/C3DEngine/Engine;Lcom/censivn/C3DEngine/parser/AParser$BitmapAsset;)V
goto/16 :goto_c
.line 119
:cond_9e
invoke-virtual {v2, v3}, Ljava/lang/StringBuffer;->append(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer;
goto :goto_8c
.line 124
:sswitch_a2
invoke-virtual {p0, p2}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readString(Ljava/io/InputStream;)Ljava/lang/String;
move-result-object v2
.line 125
invoke-virtual {p0, p2}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readShort(Ljava/io/InputStream;)I
move-result v3
move v1, v0
.line 127
:goto_ab
if-ge v1, v3, :cond_c
.line 128
invoke-virtual {p0, p2}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readShort(Ljava/io/InputStream;)I
move-result v0
.line 129
iget-object v4, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->co:Lcom/censivn/C3DEngine/parser/ParseObjectData;
iget-object v4, v4, Lcom/censivn/C3DEngine/parser/ParseObjectData;->faces:Ljava/util/ArrayList;
invoke-virtual {v4, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/censivn/C3DEngine/parser/ParseObjectFace;
iput-object v2, v0, Lcom/censivn/C3DEngine/parser/ParseObjectFace;->materialKey:Ljava/lang/String;
.line 127
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_ab
.line 80
nop
:sswitch_data_c2
.sparse-switch
0x3d3d -> :sswitch_c
0x4000 -> :sswitch_d
0x4100 -> :sswitch_2e
0x4110 -> :sswitch_50
0x4120 -> :sswitch_54
0x4130 -> :sswitch_a2
0x4140 -> :sswitch_58
0xa000 -> :sswitch_5c
0xa200 -> :sswitch_c
0xa300 -> :sswitch_63
0xafff -> :sswitch_c
.end sparse-switch
.end method
.method private readFaces(Ljava/io/InputStream;)V
.registers 10
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.prologue
const/4 v7, 0x3
const/4 v6, 0x1
const/4 v1, 0x0
.line 164
invoke-virtual {p0, p1}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readShort(Ljava/io/InputStream;)I
move-result v2
move v0, v1
.line 165
:goto_8
if-ge v0, v2, :cond_46
.line 166
new-array v3, v7, [I
.line 167
invoke-virtual {p0, p1}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readShort(Ljava/io/InputStream;)I
move-result v4
aput v4, v3, v1
.line 168
invoke-virtual {p0, p1}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readShort(Ljava/io/InputStream;)I
move-result v4
aput v4, v3, v6
.line 169
const/4 v4, 0x2
invoke-virtual {p0, p1}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readShort(Ljava/io/InputStream;)I
move-result v5
aput v5, v3, v4
.line 170
invoke-virtual {p0, p1}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readShort(Ljava/io/InputStream;)I
.line 171
new-instance v4, Lcom/censivn/C3DEngine/parser/ParseObjectFace;
invoke-direct {v4}, Lcom/censivn/C3DEngine/parser/ParseObjectFace;-><init>()V
.line 172
iput-object v3, v4, Lcom/censivn/C3DEngine/parser/ParseObjectFace;->v:[I
.line 173
iput-object v3, v4, Lcom/censivn/C3DEngine/parser/ParseObjectFace;->uv:[I
.line 174
iput v7, v4, Lcom/censivn/C3DEngine/parser/ParseObjectFace;->faceLength:I
.line 175
iput-boolean v6, v4, Lcom/censivn/C3DEngine/parser/ParseObjectFace;->hasuv:Z
.line 176
iget-object v3, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->co:Lcom/censivn/C3DEngine/parser/ParseObjectData;
iget v5, v3, Lcom/censivn/C3DEngine/parser/ParseObjectData;->numFaces:I
add-int/lit8 v5, v5, 0x1
iput v5, v3, Lcom/censivn/C3DEngine/parser/ParseObjectData;->numFaces:I
.line 177
iget-object v3, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->co:Lcom/censivn/C3DEngine/parser/ParseObjectData;
iget-object v3, v3, Lcom/censivn/C3DEngine/parser/ParseObjectData;->faces:Ljava/util/ArrayList;
invoke-virtual {v3, v4}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 179
iget-object v3, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->co:Lcom/censivn/C3DEngine/parser/ParseObjectData;
invoke-virtual {v3, v4}, Lcom/censivn/C3DEngine/parser/ParseObjectData;->calculateFaceNormal(Lcom/censivn/C3DEngine/parser/ParseObjectFace;)V
.line 165
add-int/lit8 v0, v0, 0x1
goto :goto_8
.line 181
:cond_46
return-void
.end method
.method private readHeader(Ljava/io/InputStream;)V
.registers 3
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.prologue
.line 72
invoke-virtual {p0, p1}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readShort(Ljava/io/InputStream;)I
move-result v0
iput v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->chunkID:I
.line 73
invoke-virtual {p0, p1}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readInt(Ljava/io/InputStream;)I
move-result v0
iput v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->chunkEndOffset:I
.line 74
iget v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->chunkID:I
if-gez v0, :cond_14
const/4 v0, 0x1
:goto_11
iput-boolean v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->endReached:Z
.line 75
return-void
.line 74
:cond_14
const/4 v0, 0x0
goto :goto_11
.end method
.method private readTexCoords(Ljava/io/InputStream;)V
.registers 7
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.prologue
.line 184
invoke-virtual {p0, p1}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readShort(Ljava/io/InputStream;)I
move-result v1
.line 186
const/4 v0, 0x0
:goto_5
if-ge v0, v1, :cond_25
.line 187
new-instance v2, Lcom/censivn/C3DEngine/api/element/Uv;
invoke-direct {v2}, Lcom/censivn/C3DEngine/api/element/Uv;-><init>()V
.line 188
invoke-virtual {p0, p1}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readFloat(Ljava/io/InputStream;)F
move-result v3
iput v3, v2, Lcom/censivn/C3DEngine/api/element/Uv;->u:F
.line 189
invoke-virtual {p0, p1}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readFloat(Ljava/io/InputStream;)F
move-result v3
const/high16 v4, -0x40800000 # -1.0f
mul-float/2addr v3, v4
iput v3, v2, Lcom/censivn/C3DEngine/api/element/Uv;->v:F
.line 190
iget-object v3, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->co:Lcom/censivn/C3DEngine/parser/ParseObjectData;
iget-object v3, v3, Lcom/censivn/C3DEngine/parser/ParseObjectData;->texCoords:Ljava/util/ArrayList;
invoke-virtual {v3, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 186
add-int/lit8 v0, v0, 0x1
goto :goto_5
.line 192
:cond_25
return-void
.end method
.method private readVertices(Ljava/io/InputStream;)V
.registers 9
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.prologue
.line 149
invoke-virtual {p0, p1}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readShort(Ljava/io/InputStream;)I
move-result v1
.line 151
const/4 v0, 0x0
:goto_5
if-ge v0, v1, :cond_23
.line 152
invoke-virtual {p0, p1}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readFloat(Ljava/io/InputStream;)F
move-result v2
.line 153
invoke-virtual {p0, p1}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readFloat(Ljava/io/InputStream;)F
move-result v3
.line 154
invoke-virtual {p0, p1}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readFloat(Ljava/io/InputStream;)F
move-result v4
.line 157
neg-float v3, v3
.line 159
iget-object v5, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->co:Lcom/censivn/C3DEngine/parser/ParseObjectData;
iget-object v5, v5, Lcom/censivn/C3DEngine/parser/ParseObjectData;->vertices:Ljava/util/ArrayList;
new-instance v6, Lcom/censivn/C3DEngine/api/element/Number3d;
invoke-direct {v6, v2, v4, v3}, Lcom/censivn/C3DEngine/api/element/Number3d;-><init>(FFF)V
invoke-virtual {v5, v6}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 151
add-int/lit8 v0, v0, 0x1
goto :goto_5
.line 161
:cond_23
return-void
.end method
.method private skipRead(Ljava/io/InputStream;)V
.registers 5
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.prologue
const/4 v1, 0x0
.line 142
move v0, v1
:goto_2
iget v2, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->chunkEndOffset:I
add-int/lit8 v2, v2, -0x6
if-ge v0, v2, :cond_1a
iget-boolean v2, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->endReached:Z
if-nez v2, :cond_1a
.line 143
invoke-virtual {p1}, Ljava/io/InputStream;->read()I
move-result v2
if-gez v2, :cond_18
const/4 v2, 0x1
:goto_13
iput-boolean v2, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->endReached:Z
.line 142
add-int/lit8 v0, v0, 0x1
goto :goto_2
:cond_18
move v2, v1
.line 143
goto :goto_13
.line 145
:cond_1a
return-void
.end method
# virtual methods
.method public getParsedObject()Lcom/censivn/C3DEngine/coreapi/primitives/Object3dContainer;
.registers 9
.prologue
const/4 v2, 0x0
.line 195
const-string v0, "Censivn3D"
const-string v1, "Start object creation"
invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 196
new-instance v3, Lcom/censivn/C3DEngine/coreapi/primitives/Object3dContainer;
iget-object v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->context:Lcom/censivn/C3DEngine/Engine;
invoke-direct {v3, v0, v2, v2}, Lcom/censivn/C3DEngine/coreapi/primitives/Object3dContainer;-><init>(Lcom/censivn/C3DEngine/Engine;II)V
.line 197
iget-object v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->parseObjects:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v4
.line 198
const/4 v0, 0x0
.line 200
iget-object v1, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->textureAtlas:Lcom/censivn/C3DEngine/parser/AParser$TextureAtlas;
invoke-virtual {v1}, Lcom/censivn/C3DEngine/parser/AParser$TextureAtlas;->hasBitmaps()Z
move-result v1
if-eqz v1, :cond_88
.line 201
iget-object v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->textureAtlas:Lcom/censivn/C3DEngine/parser/AParser$TextureAtlas;
invoke-virtual {v0}, Lcom/censivn/C3DEngine/parser/AParser$TextureAtlas;->generate()V
.line 202
iget-object v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->textureAtlas:Lcom/censivn/C3DEngine/parser/AParser$TextureAtlas;
invoke-virtual {v0}, Lcom/censivn/C3DEngine/parser/AParser$TextureAtlas;->getBitmap()Landroid/graphics/Bitmap;
move-result-object v0
.line 203
iget-object v1, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->context:Lcom/censivn/C3DEngine/Engine;
invoke-virtual {v1}, Lcom/censivn/C3DEngine/Engine;->getTextureManager()Lcom/censivn/C3DEngine/coreapi/manager/TextureManager;
move-result-object v1
iget-boolean v5, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->generateMipMap:Z
invoke-virtual {v1, v0, v5}, Lcom/censivn/C3DEngine/coreapi/manager/TextureManager;->createTexture(Landroid/graphics/Bitmap;Z)Lcom/censivn/C3DEngine/api/element/TextureElement;
move-result-object v1
.line 204
iget-object v5, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->textureAtlas:Lcom/censivn/C3DEngine/parser/AParser$TextureAtlas;
invoke-virtual {v5, v1}, Lcom/censivn/C3DEngine/parser/AParser$TextureAtlas;->setTextureElement(Lcom/censivn/C3DEngine/api/element/TextureElement;)V
move-object v1, v0
.line 207
:goto_3b
if-ge v2, v4, :cond_70
.line 208
iget-object v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->parseObjects:Ljava/util/ArrayList;
invoke-virtual {v0, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/censivn/C3DEngine/parser/ParseObjectData;
.line 209
const-string v5, "Censivn3D"
new-instance v6, Ljava/lang/StringBuilder;
invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
const-string v7, "Creating object "
invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v6
iget-object v7, v0, Lcom/censivn/C3DEngine/parser/ParseObjectData;->name:Ljava/lang/String;
invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v6
invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v6
invoke-static {v5, v6}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 210
iget-object v5, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->context:Lcom/censivn/C3DEngine/Engine;
iget-object v6, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->materialMap:Ljava/util/HashMap;
iget-object v7, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->textureAtlas:Lcom/censivn/C3DEngine/parser/AParser$TextureAtlas;
invoke-virtual {v0, v5, v6, v7}, Lcom/censivn/C3DEngine/parser/ParseObjectData;->getParsedObject(Lcom/censivn/C3DEngine/Engine;Ljava/util/HashMap;Lcom/censivn/C3DEngine/parser/AParser$TextureAtlas;)Lcom/censivn/C3DEngine/coreapi/primitives/Object3d;
move-result-object v0
invoke-virtual {v3, v0}, Lcom/censivn/C3DEngine/coreapi/primitives/Object3dContainer;->addChild(Lcom/censivn/C3DEngine/coreapi/primitives/Object3d;)V
.line 207
add-int/lit8 v0, v2, 0x1
move v2, v0
goto :goto_3b
.line 213
:cond_70
iget-object v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->textureAtlas:Lcom/censivn/C3DEngine/parser/AParser$TextureAtlas;
invoke-virtual {v0}, Lcom/censivn/C3DEngine/parser/AParser$TextureAtlas;->hasBitmaps()Z
move-result v0
if-eqz v0, :cond_7d
.line 214
if-eqz v1, :cond_7d
.line 215
invoke-virtual {v1}, Landroid/graphics/Bitmap;->recycle()V
.line 217
:cond_7d
const-string v0, "Censivn3D"
const-string v1, "Object creation finished"
invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 219
invoke-super {p0}, Lcom/censivn/C3DEngine/parser/AParser;->cleanup()V
.line 221
return-object v3
:cond_88
move-object v1, v0
goto :goto_3b
.end method
.method public parse(Lcom/censivn/C3DEngine/Engine;)V
.registers 6
.prologue
const/4 v3, 0x0
.line 44
iput-object p1, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->context:Lcom/censivn/C3DEngine/Engine;
.line 45
iget-object v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->resources:Landroid/content/res/Resources;
iget-object v1, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->resources:Landroid/content/res/Resources;
iget-object v2, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->resourceID:Ljava/lang/String;
invoke-virtual {v1, v2, v3, v3}, Landroid/content/res/Resources;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
move-result v1
invoke-virtual {v0, v1}, Landroid/content/res/Resources;->openRawResource(I)Ljava/io/InputStream;
move-result-object v0
.line 46
new-instance v1, Ljava/io/BufferedInputStream;
invoke-direct {v1, v0}, Ljava/io/BufferedInputStream;-><init>(Ljava/io/InputStream;)V
.line 48
const-string v0, "Censivn3D"
const-string v2, "Start parsing object"
invoke-static {v0, v2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 50
new-instance v0, Lcom/censivn/C3DEngine/parser/ParseObjectData;
invoke-direct {v0}, Lcom/censivn/C3DEngine/parser/ParseObjectData;-><init>()V
iput-object v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->co:Lcom/censivn/C3DEngine/parser/ParseObjectData;
.line 51
iget-object v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->parseObjects:Ljava/util/ArrayList;
iget-object v2, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->co:Lcom/censivn/C3DEngine/parser/ParseObjectData;
invoke-virtual {v0, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 54
:try_start_2b
invoke-direct {p0, v1}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readHeader(Ljava/io/InputStream;)V
.line 55
iget v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->chunkID:I
const/16 v2, 0x4d4d
if-eq v0, v2, :cond_3c
.line 56
const-string v0, "Censivn3D"
const-string v1, "Not a valid .3DS file!"
invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 69
:goto_3b
return-void
.line 59
:cond_3c
const-string v0, "Censivn3D"
const-string v2, "Found a valid .3DS file"
invoke-static {v0, v2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 61
:goto_43
iget-boolean v0, p0, Lcom/censivn/C3DEngine/parser/Max3DSParser;->endReached:Z
if-nez v0, :cond_4f
.line 62
invoke-direct {p0, p1, v1}, Lcom/censivn/C3DEngine/parser/Max3DSParser;->readChunk(Lcom/censivn/C3DEngine/Engine;Ljava/io/InputStream;)V
:try_end_4a
.catch Ljava/io/IOException; {:try_start_2b .. :try_end_4a} :catch_4b
goto :goto_43
.line 64
:catch_4b
move-exception v0
.line 65
invoke-virtual {v0}, Ljava/io/IOException;->printStackTrace()V
.line 68
:cond_4f
const-string v0, "Censivn3D"
const-string v1, "End parsing object"
invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_3b
.end method