Advertisement
Dimitri_UA

prj_sum: gta_sa.exe | CShadows::CastPedShadowSectorList

Jun 4th, 2012
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.84 KB | None | 0 0
  1. CStreamSector *__cdecl CShadows::CastPedShadowSectorList(CStreamSector **pStreamSector, float cornerL_X, float cornerL_Y, float cornerU_X, float cornerU_Y, int shadowCenter, float X2, float Y2, int X1, int Y1, char intensity, int red, int green, int blue, int Zdistance, int posCorrection, int zero, CShadowData *shadowData, int pResult)
  2. {
  3.   CStreamSector *streamSector; // eax@1
  4.   CEntity *entity; // esi@4
  5.   RwV3D *_pPosition; // eax@13
  6.   CMatrix *matrix?; // ecx@13
  7.   CColModel *Collision; // edx@15
  8.   RwV3D *pPosition; // eax@16
  9.   float rect.CornerA.x; // [sp+4h] [bp-10h]@9
  10.   float rect.CornerA.y; // [sp+8h] [bp-Ch]@11
  11.   float rect.CornerB.x; // [sp+Ch] [bp-8h]@9
  12.   float rect.CornerB.y; // [sp+10h] [bp-4h]@12
  13.   int pNextEntity; // [sp+18h] [bp+4h]@4
  14.  
  15.   streamSector = *pStreamSector;
  16.   if ( *pStreamSector )
  17.   {
  18.     while ( 1 )
  19.     {
  20.       entity = streamSector->pEntities1;
  21.       pNextEntity = streamSector->pEntities2;
  22.       if ( *(streamSector->pEntities1 + 0x2C) != ms_nCurrentScanCode )
  23.       {
  24.         entity->m_nScanCode = ms_nCurrentScanCode;
  25.         if ( entity->flags & 1 )
  26.         {
  27.           if ( !(BYTE2(entity->flags) & 1) && (entity->m_nbInterior == activeInterior || entity->m_nbInterior == 13) )
  28.           {
  29.             (*(entity->__parent.__vmt + 0x24))(entity, &rect.CornerA.x);// CEntity::getBoundRect
  30.             if ( cornerL_X < rect.CornerB.x )
  31.             {
  32.               if ( cornerU_X > rect.CornerA.x && cornerL_Y < rect.CornerA.y && cornerU_Y > rect.CornerB.y )
  33.               {
  34.                 matrix? = entity->__parent.m_pCoords;
  35.                 _pPosition = &matrix?->matrix.pos;
  36.                 if ( !matrix? )
  37.                   _pPosition = &entity->__parent.placement.pos;
  38.                 Collision = modelPtrs[entity->m_wModelIndex]->m_pColModel;
  39.                 if ( Collision->bbox.inf.z + _pPosition->z > *(shadowCenter + 8) - *&Zdistance )
  40.                 {
  41.                   pPosition = &matrix?->matrix.pos;
  42.                   if ( !matrix? )
  43.                     pPosition = &entity->__parent.placement.pos;
  44.                   if ( Collision->bbox.sup.z + pPosition->z < *(shadowCenter + 8) )
  45.                     CShadows::castPedShadowEntity(
  46.                       entity,
  47.                       shadowCenter,
  48.                       X2,
  49.                       Y2,
  50.                       X1,
  51.                       Y1,
  52.                       intensity,
  53.                       red,
  54.                       green,
  55.                       blue,
  56.                       Zdistance,
  57.                       posCorrection,
  58.                       zero,
  59.                       shadowData);
  60.                 }
  61.               }
  62.             }
  63.           }
  64.         }
  65.       }
  66.       streamSector = pNextEntity;
  67.       if ( !pNextEntity )
  68.         break;
  69.       streamSector = pNextEntity;
  70.     }
  71.   }
  72.   return streamSector;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement