|
@@ -1844,15 +1844,31 @@ bool CMapHandler::recalculateHideVisPos(int3 &pos)
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-bool CMapHandler::recalculateHideVisPosUnderObj(CGObjectInstance *obj)
|
|
|
+bool CMapHandler::recalculateHideVisPosUnderObj(CGObjectInstance *obj, bool withBorder)
|
|
|
{
|
|
|
- for(int fx=0; fx<obj->defInfo->handler->ourImages[0].bitmap->w/32; ++fx)
|
|
|
+ if(withBorder)
|
|
|
{
|
|
|
- for(int fy=0; fy<obj->defInfo->handler->ourImages[0].bitmap->h/32; ++fy)
|
|
|
+ for(int fx=-1; fx<=obj->defInfo->handler->ourImages[0].bitmap->w/32; ++fx)
|
|
|
{
|
|
|
- if((obj->pos.x + fx - obj->defInfo->handler->ourImages[0].bitmap->w/32+1)>=0 && (obj->pos.x + fx - obj->defInfo->handler->ourImages[0].bitmap->w/32+1)<ttiles.size()-Woff && (obj->pos.y + fy - obj->defInfo->handler->ourImages[0].bitmap->h/32+1)>=0 && (obj->pos.y + fy - obj->defInfo->handler->ourImages[0].bitmap->h/32+1)<ttiles[0].size()-Hoff)
|
|
|
+ for(int fy=-1; fy<=obj->defInfo->handler->ourImages[0].bitmap->h/32; ++fy)
|
|
|
{
|
|
|
- recalculateHideVisPos(int3(obj->pos.x + fx - obj->defInfo->handler->ourImages[0].bitmap->w/32, obj->pos.y + fy - obj->defInfo->handler->ourImages[0].bitmap->h/32, obj->pos.z));
|
|
|
+ if((obj->pos.x + fx - obj->defInfo->handler->ourImages[0].bitmap->w/32+1)>=0 && (obj->pos.x + fx - obj->defInfo->handler->ourImages[0].bitmap->w/32+1)<ttiles.size()-Woff && (obj->pos.y + fy - obj->defInfo->handler->ourImages[0].bitmap->h/32+1)>=0 && (obj->pos.y + fy - obj->defInfo->handler->ourImages[0].bitmap->h/32+1)<ttiles[0].size()-Hoff)
|
|
|
+ {
|
|
|
+ recalculateHideVisPos(int3(obj->pos.x + fx - obj->defInfo->handler->ourImages[0].bitmap->w/32 +1, obj->pos.y + fy - obj->defInfo->handler->ourImages[0].bitmap->h/32 + 1, obj->pos.z));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ for(int fx=0; fx<obj->defInfo->handler->ourImages[0].bitmap->w/32; ++fx)
|
|
|
+ {
|
|
|
+ for(int fy=0; fy<obj->defInfo->handler->ourImages[0].bitmap->h/32; ++fy)
|
|
|
+ {
|
|
|
+ if((obj->pos.x + fx - obj->defInfo->handler->ourImages[0].bitmap->w/32+1)>=0 && (obj->pos.x + fx - obj->defInfo->handler->ourImages[0].bitmap->w/32+1)<ttiles.size()-Woff && (obj->pos.y + fy - obj->defInfo->handler->ourImages[0].bitmap->h/32+1)>=0 && (obj->pos.y + fy - obj->defInfo->handler->ourImages[0].bitmap->h/32+1)<ttiles[0].size()-Hoff)
|
|
|
+ {
|
|
|
+ recalculateHideVisPos(int3(obj->pos.x + fx - obj->defInfo->handler->ourImages[0].bitmap->w/32 +1, obj->pos.y + fy - obj->defInfo->handler->ourImages[0].bitmap->h/32 + 1, obj->pos.z));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|