comparison mm7_5.cpp @ 1493:9e9a12506d51

player detection partly working
author zipi
date Fri, 30 Aug 2013 22:23:54 +0100
parents 7ef4b64f6329
children ff1867836af5
comparison
equal deleted inserted replaced
1492:480b09200f88 1493:9e9a12506d51
4314 return v6; 4314 return v6;
4315 } 4315 }
4316 4316
4317 4317
4318 //----- (004070EF) -------------------------------------------------------- 4318 //----- (004070EF) --------------------------------------------------------
4319 bool __fastcall sub_4070EF_prolly_collide_objects(unsigned int uObjID, unsigned int uObj2ID) 4319 bool __fastcall sub_4070EF_prolly_detect_player(unsigned int uObjID, unsigned int uObj2ID)
4320 { 4320 {
4321 signed int v2; // eax@1 4321 signed int v2; // eax@1
4322 unsigned int v3; // ecx@1 4322 //unsigned int v3; // ecx@1
4323 signed int v4; // esi@1 4323 //signed int v4; // esi@1
4324 int v5; // ecx@2 4324 int v5; // ecx@2
4325 signed int v6; // eax@4 4325 signed int v6; // eax@4
4326 int v7; // eax@4 4326 int object1_sector; // eax@4
4327 float v8; // ST24_4@5 4327 float v8; // ST24_4@5
4328 double v9; // ST18_8@5 4328 double v9; // ST18_8@5
4329 signed int v10; // eax@6 4329 signed int v10; // eax@6
4330 int v11; // ecx@6 4330 int v11; // ecx@6
4331 signed int v12; // eax@7 4331 signed int v12; // eax@7
4332 int v13; // esi@7 4332 int v13; // esi@7
4333 int v14; // esi@8 4333 int v14; // esi@8
4334 int v15; // esi@9 4334 int v15; // esi@9
4335 signed int v16; // eax@11 4335 signed int v16; // eax@11
4336 int v17; // edi@11 4336 int obj2_z; // edi@11
4337 int v18; // esi@11 4337 int obj2_x; // esi@11
4338 int v19; // eax@13 4338 int obj2_sector; // eax@13
4339 float v20; // ST24_4@14 4339 float v20; // ST24_4@14
4340 double v21; // ST18_8@14 4340 double v21; // ST18_8@14
4341 signed int v22; // eax@15 4341 signed int v22; // eax@15
4342 int v23; // ebx@16 4342 int dist2_x; // ebx@16
4343 signed int v24; // ecx@16 4343 signed int v24; // ecx@16
4344 int v25; // eax@18 4344 int v25; // eax@18
4345 int v26; // eax@28 4345 //int v26; // eax@28
4346 BLVSector *v27; // edx@31 4346 //BLVSector *v27; // edx@31
4347 int v28; // ecx@31 4347 //int v28; // ecx@31
4348 BLVFace *v29; // ebx@32 4348 BLVFace *v29; // ebx@32
4349 Vec3_short_ *v30; // esi@32 4349 Vec3_short_ *v30; // esi@32
4350 int v31; // eax@32 4350 int v31; // eax@32
4351 int v32; // ST50_4@44 4351 int v32; // ST50_4@44
4352 int v33; // ST54_4@44 4352 int v33; // ST54_4@44
4358 int v39; // ST4C_4@49 4358 int v39; // ST4C_4@49
4359 signed __int64 v40; // qtt@50 4359 signed __int64 v40; // qtt@50
4360 __int16 v42; // bx@58 4360 __int16 v42; // bx@58
4361 int v43; // [sp-8h] [bp-70h]@11 4361 int v43; // [sp-8h] [bp-70h]@11
4362 int v44; // [sp-4h] [bp-6Ch]@11 4362 int v44; // [sp-4h] [bp-6Ch]@11
4363 int v45; // [sp+Ch] [bp-5Ch]@32 4363 //int v45; // [sp+Ch] [bp-5Ch]@32
4364 __int16 v46; // [sp+10h] [bp-58h]@32 4364 //__int16 v46; // [sp+10h] [bp-58h]@32
4365 int v47; // [sp+18h] [bp-50h]@20 4365 int v47; // [sp+18h] [bp-50h]@20
4366 int v48; // [sp+1Ch] [bp-4Ch]@20 4366 int v48; // [sp+1Ch] [bp-4Ch]@20
4367 int v49; // [sp+20h] [bp-48h]@20 4367 int v49; // [sp+20h] [bp-48h]@20
4368 int v50; // [sp+24h] [bp-44h]@16 4368 int dist2_z; // [sp+24h] [bp-44h]@16
4369 signed int v51; // [sp+24h] [bp-44h]@27 4369 signed int v51; // [sp+24h] [bp-44h]@27
4370 signed int v52; // [sp+28h] [bp-40h]@26 4370 signed int v52; // [sp+28h] [bp-40h]@26
4371 signed int v53; // [sp+2Ch] [bp-3Ch]@23 4371 signed int v53; // [sp+2Ch] [bp-3Ch]@23
4372 signed int v54; // [sp+30h] [bp-38h]@22 4372 signed int v54; // [sp+30h] [bp-38h]@22
4373 signed int v55; // [sp+34h] [bp-34h]@21 4373 signed int v55; // [sp+34h] [bp-34h]@21
4374 signed int v56; // [sp+38h] [bp-30h]@20 4374 signed int v56; // [sp+38h] [bp-30h]@20
4375 signed int v57; // [sp+3Ch] [bp-2Ch]@28 4375 signed int v57; // [sp+3Ch] [bp-2Ch]@28
4376 int v58; // [sp+44h] [bp-24h]@50 4376 int v58; // [sp+44h] [bp-24h]@50
4377 int v59; // [sp+48h] [bp-20h]@44 4377 int v59; // [sp+48h] [bp-20h]@44
4378 int v60; // [sp+50h] [bp-18h]@11 4378 int obj2_y; // [sp+50h] [bp-18h]@11
4379 signed int v61; // [sp+50h] [bp-18h]@31 4379 signed int v61; // [sp+50h] [bp-18h]@31
4380 int v62; // [sp+54h] [bp-14h]@16 4380 //int v62; // [sp+54h] [bp-14h]@16
4381 int v63; // [sp+58h] [bp-10h]@4 4381 int obj_x; // [sp+58h] [bp-10h]@4
4382 int v64; // [sp+5Ch] [bp-Ch]@4 4382 int obj_y; // [sp+5Ch] [bp-Ch]@4
4383 int v65; // [sp+60h] [bp-8h]@4 4383 int obj_z; // [sp+60h] [bp-8h]@4
4384 int v66; // [sp+64h] [bp-4h]@7 4384 int v66; // [sp+64h] [bp-4h]@7
4385 4385
4386 v2 = PID_ID(uObjID); 4386 v2 = PID_ID(uObjID);
4387 v3 = PID_TYPE(uObjID) - 2; 4387 if ( PID_TYPE(uObjID) == 5 )
4388 v4 = uObj2ID;
4389 if ( v3 )
4390 { 4388 {
4391 v5 = v3 - 1;
4392 if ( v5 )
4393 {
4394 if ( v5 != 2 )
4395 return 0;
4396 v6 = v2; 4389 v6 = v2;
4397 v63 = pLevelDecorations[v6].vPosition.x; 4390 obj_x = pLevelDecorations[v6].vPosition.x;
4398 v64 = pLevelDecorations[v6].vPosition.y; 4391 obj_y = pLevelDecorations[v6].vPosition.y;
4399 v65 = pLevelDecorations[v6].vPosition.z; 4392 obj_z = pLevelDecorations[v6].vPosition.z;
4400 v7 = pIndoor->GetSector(v63, v64, v65); 4393 object1_sector = pIndoor->GetSector(obj_x, obj_y, obj_z);
4401 } 4394 }
4402 else 4395 else if ( PID_TYPE(uObjID) == 3 )
4403 { 4396 {
4404 v63 = pActors[v2].vPosition.x; 4397 obj_x = pActors[v2].vPosition.x;
4405 v64 = pActors[v2].vPosition.y; 4398 obj_y = pActors[v2].vPosition.y;
4406 v8 = (double)pActors[v2].uActorHeight * 0.69999999; 4399 v8 = (double)pActors[v2].uActorHeight * 0.69999999;
4407 v9 = v8 + 6.7553994e15; 4400 //v9 = v8 + 6.7553994e15;
4408 v65 = LODWORD(v9) + pActors[v2].vPosition.z; 4401 //obj_z = LODWORD(v9) + pActors[v2].vPosition.z;
4409 v7 = pActors[v2].uSectorID; 4402 obj_z = (int)v8 + pActors[v2].vPosition.z;
4410 } 4403 object1_sector = pActors[v2].uSectorID;
4404 }
4405 else if ( PID_TYPE(uObjID) == 2 )
4406 {
4407 v10 = v2;
4408 obj_x = pSpriteObjects[v10].vPosition.x;
4409 obj_y = pSpriteObjects[v10].vPosition.y;
4410 obj_z = pSpriteObjects[v10].vPosition.z;
4411 object1_sector = pSpriteObjects[v10].uSectorID;
4411 } 4412 }
4412 else 4413 else
4414 return 0;
4415 v66 = object1_sector;
4416 v12 = PID_ID(uObj2ID);
4417 if ( PID_TYPE(uObj2ID) == 5)
4413 { 4418 {
4414 v10 = v2; 4419 v16 = v12;
4415 v63 = pSpriteObjects[v10].vPosition.x; 4420 obj2_z = pLevelDecorations[v16].vPosition.z;
4416 v64 = pSpriteObjects[v10].vPosition.y; 4421 obj2_x = pLevelDecorations[v16].vPosition.x;
4417 v11 = pSpriteObjects[v10].vPosition.z; 4422 obj2_y = pLevelDecorations[v16].vPosition.y;
4418 v7 = pSpriteObjects[v10].uSectorID; 4423 obj2_sector = pIndoor->GetSector(obj2_x, obj2_y, obj2_z);
4419 v65 = v11; 4424 }
4425 else if ( PID_TYPE(uObj2ID) == 4)
4426 {
4427 obj2_x = pParty->vPosition.x;
4428 obj2_z = pParty->sEyelevel + pParty->vPosition.z;
4429 obj2_y = pParty->vPosition.y;
4430 obj2_sector = pIndoor->GetSector(obj2_x, obj2_y, obj2_z);
4431 }
4432
4433 else if( PID_TYPE(uObj2ID) == 3)
4434 {
4435 obj2_y = pActors[v12].vPosition.y;
4436 obj2_x = pActors[v12].vPosition.x;
4437 v20 = (double)pActors[v12].uActorHeight * 0.69999999;
4438 //v21 = v20 + 6.7553994e15;
4439 //obj2_z = LODWORD(v21) + pActors[v12].vPosition.z;
4440 obj2_z = (int)v20 + pActors[v12].vPosition.z;
4441 obj2_sector = pActors[v12].uSectorID;
4420 } 4442 }
4421 v66 = v7; 4443
4422 v12 = PID_ID(v4); 4444 else if ( PID_TYPE(uObj2ID) == 2)
4423 v13 = PID_TYPE(v4) - 2;
4424 if ( v13 )
4425 { 4445 {
4426 v14 = v13 - 1; 4446 v22 = v12;
4427 if ( v14 ) 4447 obj2_x = pSpriteObjects[v22].vPosition.x;
4428 { 4448 obj2_z = pSpriteObjects[v22].vPosition.z;
4429 v15 = v14 - 1; 4449 obj2_y = pSpriteObjects[v22].vPosition.y;
4430 if ( v15 ) 4450 obj2_sector = pSpriteObjects[v22].uSectorID;
4431 {
4432 if ( v15 != 1 )
4433 return 0;
4434 v16 = v12;
4435 v17 = pLevelDecorations[v16].vPosition.z;
4436 v18 = pLevelDecorations[v16].vPosition.x;
4437 v44 = pLevelDecorations[v16].vPosition.z;
4438 v60 = pLevelDecorations[v16].vPosition.y;
4439 v43 = pLevelDecorations[v16].vPosition.y;
4440 }
4441 else
4442 {
4443 v18 = pParty->vPosition.x;
4444 v17 = pParty->sEyelevel + pParty->vPosition.z;
4445 v60 = pParty->vPosition.y;
4446 v44 = pParty->sEyelevel + pParty->vPosition.z;
4447 v43 = pParty->vPosition.y;
4448 }
4449 v19 = pIndoor->GetSector(v18, v43, v44);
4450 }
4451 else
4452 {
4453 v60 = pActors[v12].vPosition.y;
4454 v18 = pActors[v12].vPosition.x;
4455 v20 = (double)pActors[v12].uActorHeight * 0.69999999;
4456 v21 = v20 + 6.7553994e15;
4457 v17 = LODWORD(v21) + pActors[v12].vPosition.z;
4458 v19 = pActors[v12].uSectorID;
4459 }
4460 } 4451 }
4461 else 4452 else
4462 { 4453 return 0;
4463 v22 = v12; 4454 dist2_x = obj2_x - obj_x;
4464 v18 = pSpriteObjects[v22].vPosition.x; 4455 dist2_z = obj2_z - obj_z;
4465 v17 = pSpriteObjects[v22].vPosition.z; 4456 v24 = integer_sqrt(dist2_x * dist2_x + (obj2_y - obj_y) * (obj2_y - obj_y) + dist2_z * dist2_z);
4466 v60 = pSpriteObjects[v22].vPosition.y;
4467 v19 = pSpriteObjects[v22].uSectorID;
4468 }
4469 v62 = v19;
4470 v23 = v18 - v63;
4471 v50 = v17 - v65;
4472 v24 = integer_sqrt(v23 * v23 + (v60 - v64) * (v60 - v64) + v50 * v50);
4473 if ( v24 > 5120 ) 4457 if ( v24 > 5120 )
4474 return 0; 4458 return 0;
4475 if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor) 4459 if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor)
4476 return 1; 4460 return 1;
4477 v25 = 65536; 4461 v25 = 65536;
4478 if ( v24 ) 4462 if ( v24 )
4479 v25 = 65536 / v24; 4463 v25 = 65536 / v24;
4480 v49 = v23 * v25; 4464 v49 = dist2_x * v25;
4481 v47 = v50 * v25; 4465 v47 = dist2_z * v25;
4482 v48 = (v60 - v64) * v25; 4466 v48 = (obj2_y - obj_y) * v25;
4483 v56 = v63; 4467 if ( obj_x < obj2_x )
4484 if ( v63 < v18 )
4485 { 4468 {
4486 v55 = v18; 4469 v56 = obj_x;
4470 v55 = obj2_x;
4487 } 4471 }
4488 else 4472 else
4489 { 4473 {
4490 v56 = v18; 4474 v56 = obj2_x;
4491 v55 = v63; 4475 v55 = obj_x;
4492 } 4476 }
4493 v54 = v64; 4477 if ( obj_y < obj2_y )
4494 if ( v64 < v60 )
4495 { 4478 {
4496 v53 = v60; 4479 v54 = obj_y;
4480 v53 = obj2_y;
4497 } 4481 }
4498 else 4482 else
4499 { 4483 {
4500 v54 = v60; 4484 v54 = obj2_y;
4501 v53 = v64; 4485 v53 = obj_y;
4502 } 4486 }
4503 v52 = v65; 4487 if ( obj_z < obj2_z )
4504 if ( v65 < v17 )
4505 { 4488 {
4506 v51 = v17; 4489 v52 = obj_z;
4490 v51 = obj2_z;
4507 } 4491 }
4508 else 4492 else
4509 { 4493 {
4510 v52 = v17; 4494 v52 = obj2_z;
4511 v51 = v65; 4495 v51 = obj_z;
4512 } 4496 }
4513 v57 = 0; 4497 v57 = 0;
4514 v26 = v66; 4498 if ( v66 == obj2_sector )
4515 while ( 2 )
4516 {
4517 if ( v26 == v62 )
4518 return 1; 4499 return 1;
4519 if ( v57 >= 30 || (v27 = pIndoor->pSectors, v28 = v66, v61 = 0, pIndoor->pSectors[v66].uNumPortals <= 0) ) 4500 //for ( v57 = 0; v57 < 30; v57++ )
4520 break; 4501 if ( v57 < 30 && !(v61 = 0, pIndoor->pSectors[v66].uNumPortals <= 0) )
4521 while ( 1 ) 4502 for( int v61 = 0; v61 < pIndoor->pSectors[v66].uNumPortals; v61++ )
4522 { 4503 {
4523 v29 = &pIndoor->pFaces[v27[v28].pPortals[v61]]; 4504 v29 = &pIndoor->pFaces[pIndoor->pSectors[v66].pPortals[v61]];
4524 v30 = &pIndoor->pVertices[*v29->pVertexIDs]; 4505 v30 = &pIndoor->pVertices[*v29->pVertexIDs];
4525 v45 = *(int *)&v30->x; 4506 //v45 = *(int *)&v30->x;
4526 v46 = v30->z; 4507 //v46 = v30->z;
4527 v31 = v29->pFacePlane_old.vNormal.z * (v46 - v65) 4508 //v31 = v29->pFacePlane_old.vNormal.z * (v46 - obj_z)
4528 + v29->pFacePlane_old.vNormal.y * (SHIWORD(v45) - v64) 4509 v31 = v29->pFacePlane_old.vNormal.z * (v30->z - obj_z)
4529 + v29->pFacePlane_old.vNormal.x * ((signed __int16)v45 - v63); 4510 //+ v29->pFacePlane_old.vNormal.y * (SHIWORD(v45) - obj_y)
4511 + v29->pFacePlane_old.vNormal.y * (v30->y - obj_y)
4512 //+ v29->pFacePlane_old.vNormal.x * ((signed __int16)v45 - obj_x);
4513 + v29->pFacePlane_old.vNormal.x * (v30->x - obj_x);
4530 if ( v66 != v29->uSectorID ) 4514 if ( v66 != v29->uSectorID )
4531 v31 = -v31; 4515 v31 = -v31;
4532 if ( v31 >= 0 && (signed __int16)v45 != v63 && SHIWORD(v45) != v64 && v46 != v65 4516 //if (!( v31 >= 0 && (signed __int16)v45 != obj_x && SHIWORD(v45) != obj_y && v46 != obj_z
4517 if (!( v31 >= 0 && v30->x != obj_x && v30->y != obj_y && v30->z != obj_z
4533 || v56 > v29->pBounding.x2 4518 || v56 > v29->pBounding.x2
4534 || v55 < v29->pBounding.x1 4519 || v55 < v29->pBounding.x1
4535 || v54 > v29->pBounding.y2 4520 || v54 > v29->pBounding.y2
4536 || v53 < v29->pBounding.y1 4521 || v53 < v29->pBounding.y1
4537 || v52 > v29->pBounding.z2 4522 || v52 > v29->pBounding.z2
4538 || v51 < v29->pBounding.z1 ) 4523 || v51 < v29->pBounding.z1 ) )
4539 goto LABEL_54; 4524 {
4540 v32 = (unsigned __int64)(v49 * (signed __int64)v29->pFacePlane_old.vNormal.x) >> 16; 4525 v32 = (unsigned __int64)(v49 * (signed __int64)v29->pFacePlane_old.vNormal.x) >> 16;
4541 v33 = (unsigned __int64)(v47 * (signed __int64)v29->pFacePlane_old.vNormal.z) >> 16; 4526 v33 = (unsigned __int64)(v47 * (signed __int64)v29->pFacePlane_old.vNormal.z) >> 16;
4542 v34 = (unsigned __int64)(v48 * (signed __int64)v29->pFacePlane_old.vNormal.y) >> 16; 4527 v34 = (unsigned __int64)(v48 * (signed __int64)v29->pFacePlane_old.vNormal.y) >> 16;
4543 v35 = v32 + v33 + v34 == 0; 4528 v35 = v32 + v33 + v34 == 0;
4544 v36 = v32 + v33 + v34; 4529 v36 = v32 + v33 + v34;
4545 v59 = v32 + v33 + v34; 4530 v59 = v32 + v33 + v34;
4546 if ( v35 ) 4531 if ( !v35 )
4547 goto LABEL_53; 4532 {
4548 v37 = v65 * v29->pFacePlane_old.vNormal.z; 4533 v37 = obj_z * v29->pFacePlane_old.vNormal.z;
4549 v38 = -(v29->pFacePlane_old.dist + v37 + v63 * v29->pFacePlane_old.vNormal.x + v64 * v29->pFacePlane_old.vNormal.y); 4534 v38 = -(v29->pFacePlane_old.dist + v37 + obj_x * v29->pFacePlane_old.vNormal.x + obj_y * v29->pFacePlane_old.vNormal.y);
4550 if ( v36 <= 0 ) 4535 if ( v36 <= 0 ^ v29->pFacePlane_old.dist + v37 + obj_x * v29->pFacePlane_old.vNormal.x + obj_y * v29->pFacePlane_old.vNormal.y <= 0)
4551 break; 4536 {
4552 if ( v29->pFacePlane_old.dist + v37 + v63 * v29->pFacePlane_old.vNormal.x + v64 * v29->pFacePlane_old.vNormal.y <= 0 ) 4537 v39 = abs(-(v29->pFacePlane_old.dist
4553 goto LABEL_49; 4538 + v37
4554 LABEL_53: 4539 + obj_x * v29->pFacePlane_old.vNormal.x
4555 v27 = pIndoor->pSectors; 4540 + obj_y * v29->pFacePlane_old.vNormal.y)) >> 14;
4556 LABEL_54: 4541 if ( v39 > abs(v36)
4557 ++v61; 4542 || (LODWORD(v40) = v38 << 16, HIDWORD(v40) = v38 >> 16, v58 = v40 / v59, (signed int)(v40 / v59) < 0)
4558 if ( v61 >= v27[v28].uNumPortals ) 4543 || !sub_4075DB(
4559 goto LABEL_55; 4544 obj_x + ((signed int)(((unsigned __int64)(v58 * (signed __int64)v49) >> 16) + 32768) >> 16),
4545 obj_y + ((signed int)(((unsigned __int64)(v58 * (signed __int64)v48) >> 16) + 32768) >> 16),
4546 obj_z + ((signed int)(((unsigned __int64)(v58 * (signed __int64)v47) >> 16) + 32768) >> 16),
4547 v29) )
4548 {
4549 continue;
4550 }
4551 if ( v29->uSectorID == v66 )
4552 v42 = v29->uBackSectorID;
4553 else
4554 v42 = v29->uSectorID;
4555 if ( v42 != v66 )
4556 {
4557 ++v57;
4558 v66 = v42;
4559 if ( v42 == obj2_sector )
4560 return 1;
4561 if ( v57 < 30 && pIndoor->pSectors[v66].uNumPortals > 0)
4562 {
4563 v61=-1;
4564 continue;
4565 }
4566
4567 }
4568 break;
4569 }
4570 }
4571 }
4560 } 4572 }
4561 if ( v29->pFacePlane_old.dist + v37 + v63 * v29->pFacePlane_old.vNormal.x + v64 * v29->pFacePlane_old.vNormal.y < 0 ) 4573 if ( v66 != obj2_sector )
4562 goto LABEL_53;
4563 LABEL_49:
4564 v39 = abs(-(v29->pFacePlane_old.dist
4565 + v37
4566 + v63 * v29->pFacePlane_old.vNormal.x
4567 + v64 * v29->pFacePlane_old.vNormal.y)) >> 14;
4568 if ( v39 > abs(v36)
4569 || (LODWORD(v40) = v38 << 16, HIDWORD(v40) = v38 >> 16, v58 = v40 / v59, (signed int)(v40 / v59) < 0)
4570 || !sub_4075DB(
4571 v63 + ((signed int)(((unsigned __int64)(v58 * (signed __int64)v49) >> 16) + 32768) >> 16),
4572 v64 + ((signed int)(((unsigned __int64)(v58 * (signed __int64)v48) >> 16) + 32768) >> 16),
4573 v65 + ((signed int)(((unsigned __int64)(v58 * (signed __int64)v47) >> 16) + 32768) >> 16),
4574 v29) )
4575 {
4576 v28 = v66;
4577 goto LABEL_53;
4578 }
4579 if ( v29->uSectorID == v66 )
4580 v42 = v29->uBackSectorID;
4581 else
4582 v42 = v29->uSectorID;
4583 v26 = v42;
4584 if ( v42 != v66 )
4585 {
4586 ++v57;
4587 v66 = v42;
4588 continue;
4589 }
4590 break;
4591 }
4592 LABEL_55:
4593 if ( v66 != v62 )
4594 return 0; 4574 return 0;
4595 return 1; 4575 return 1;
4596 } 4576 }
4597 4577
4598 //----- (004075DB) -------------------------------------------------------- 4578 //----- (004075DB) --------------------------------------------------------
4619 bool result; // eax@25 4599 bool result; // eax@25
4620 int v29; // [sp+10h] [bp-Ch]@14 4600 int v29; // [sp+10h] [bp-Ch]@14
4621 signed int a3a; // [sp+24h] [bp+8h]@14 4601 signed int a3a; // [sp+24h] [bp+8h]@14
4622 int a4a; // [sp+28h] [bp+Ch]@2 4602 int a4a; // [sp+28h] [bp+Ch]@2
4623 4603
4624 __debugbreak(); 4604 //__debugbreak();
4625 4605
4626 v5 = a4->uAttributes; 4606 v5 = a4->uAttributes;
4627 v9 = pIndoor->pVertices; 4607 v9 = pIndoor->pVertices;
4628 if ( v5 & FACE_XY_PLANE ) 4608 if ( v5 & FACE_XY_PLANE )
4629 { 4609 {