63     int xcnt,ycnt,iTx,iTy;
 
   84         for (ycnt=0; ycnt<pClipRect->
Hgt; ++ycnt)
 
   87             for (xcnt=0; xcnt<pClipRect->
Wdt; ++xcnt,++pPix)
 
   93                     iTx=pClipRect->
x+xcnt; iTy=pClipRect->
y+ycnt;
 
  146         for (ycnt = 0; ycnt < pClipRect->
Hgt; ycnt++)
 
  152             for (xcnt = 0; xcnt < pClipRect->
Wdt; xcnt++)
 
  155                 int32_t iMx = 
fixtoi(xa + ya) + w / 2;
 
  156                 int32_t iMy = 
fixtoi(xb + yb) + h / 2;
 
  158                 if (iMx >= 0 && iMy >= 0 && iMx < w && iMy < h && pSolidMask->_GetPix(iMx+mx0, iMy+my0))
 
  176                 xa += Ma1; xb += Mb1;
 
  179             ya += Ma2; yb += Mb2;
 
  190         if (dx != 
Fix0 || dy != 0)
 
  221         if (!pSolidMask) 
return 0; 
 
  276         if (pSolid->MaskPut) 
if (pSolid->MaskPutRect.Overlap(
MaskPutRect))
 
  281                 pSolid->MaskPut = 
false;
 
  283                 pSolid->Put(
false, &ClipRect, 
false);
 
  287     if (fBackupAttachment)
 
  300                     bool has_dup = 
false;
 
  307                     if (has_dup) 
continue;
 
  310                     for (; iVtx < pObj->Shape.VtxNum; ++iVtx)
 
  311                         if (pObj->Shape.GetVertexContact(iVtx, pObj->Action.t_attach | 
CNAT_Bottom, pObj->GetX(), pObj->GetY(), 
DensityProvider(*
this)))
 
  313                     if (iVtx == pObj->Shape.VtxNum) 
continue; 
 
  349     for (
int y = where.
y; y < where.
y + where.
Hgt; ++y)
 
  351         for (
int x = where.
x; x < where.
x + where.
Wdt; ++x)
 
  370     for (
int y = where.
y; y < where.
y + where.
Hgt; ++y)
 
  372         for (
int x = where.
x; x < where.
x + where.
Wdt; ++x)
 
  391     for (
int y = where.
y; y < where.
y + where.
Hgt; ++y)
 
  393         for (
int x = where.
x; x < where.
x + where.
Wdt; ++x)
 
  494     if (!hGroup.
LoadEntry(szFilename, &png_buf)) 
return nullptr; 
 
  497     for (
size_t y=0u; y<png.
iHgt; ++y)
 
  498         for (
size_t x=0u; x<png.
iWdt; ++x)
 
  499             result->
SetPix(x,y,((png.
GetPix(x,y)>>24)<128) ? 0x00 : 0xff);
 
const int32_t C4M_Vehicle
 
constexpr bool SOLIDMASK_DEBUG
 
bool IsSomeVehicle(BYTE mat)
 
C4Fixed itofix(int32_t x)
 
C4Real Cos(const C4Real &fAngle)
 
int fixtoi(const C4Fixed &x)
 
C4Real Sin(const C4Real &fAngle)
 
C4Surface * GetBitmap(DWORD dwClr=0)
 
void Set(C4Surface &rSfc)
 
void DrawX(C4Surface *sfcTarget, float iX, float iY, float iWdt, float iHgt, int32_t iPhaseX=0, int32_t iPhaseY=0) const
 
void DrawXR(C4Surface *sfcTarget, int32_t iX, int32_t iY, int32_t iWdt, int32_t iHgt, int32_t iPhaseX=0, int32_t iPhaseY=0, int32_t r=0)
 
bool LoadEntry(const char *entry_name, char **buffer, size_t *size_info=nullptr, int zeros_to_append=0)
 
C4ObjectList * NextObjectShapes(C4ObjectList *pPrev, C4LSector **ppSct)
 
C4ObjectList * FirstObjectShapes(C4LSector **ppSct)
 
BYTE GetPix(int32_t x, int32_t y) const
 
BYTE _GetPix(int32_t x, int32_t y) const
 
static const uint8_t Transparent
 
bool _SetPix2(int32_t x, int32_t y, BYTE fgPix, BYTE bgPix)
 
int32_t GetHeight() const
 
void CheckInstabilityRange(int32_t tx, int32_t ty)
 
void _SetPix2Tmp(int32_t x, int32_t y, BYTE fgPix, BYTE bgPix)
 
int32_t GetMatCount(int material) const
 
bool SetPix2(int32_t x, int32_t y, BYTE fgPix, BYTE bgPix)
 
bool IsMoveableBySolidMask(int ComparisonPlane) const
 
int32_t GetSolidMaskPlane() const
 
int32_t iLastAttachMovementFrame
 
void MovePosition(int32_t dx, int32_t dy)
 
C4DefGraphics * GetGraphics() const
 
void Intersect(const C4Rect &r2)
 
bool ContactCheck(int32_t cx, int32_t cy, uint32_t *border_hack_contacts=nullptr, bool collide_halfvehic=false)
 
int32_t GetDensity(int32_t x, int32_t y) const override
 
static C4SolidMask * Last
 
class C4Object ** ppAttachingObjects
 
void Draw(C4TargetFacet &cgo)
 
static void RemoveSolidMasks()
 
void PutTemporary(C4Rect where)
 
int iAttachingObjectsCapacity
 
C4SolidMask(C4Object *pForObject)
 
void Put(bool fCauseInstability, C4TargetRect *pClipRect, bool fRestoreAttachment)
 
static void PutSolidMasks()
 
void Repair(C4Rect where)
 
static CSurface8 * LoadMaskFromFile(class C4Group &hGroup, const char *szFilename)
 
void Remove(bool fBackupAttachment)
 
static bool CheckConsistency()
 
void RemoveTemporary(C4Rect where)
 
static C4SolidMask * First
 
int iAttachingObjectsCount
 
void SetHalfVehicle(bool set)
 
void Set(int32_t iX, int32_t iY, int32_t iWdt, int32_t iHgt, int32_t iTX, int32_t iTY)
 
bool ClipBy(C4TargetRect &rClip)
 
bool Load(BYTE *pFile, int iSize)
 
DWORD GetPix(int iX, int iY)
 
BYTE _GetPix(int x, int y) const
 
void SetPix(int iX, int iY, BYTE byCol)