Skip to content

Commit f8fa5a8

Browse files
authored
Fix tilemap culling (#2403)
* Fix tilemap culling having twice the width and height * revert changes to old one * remove unneeded debug crumps [skip ci] * fix TMX culling final remove a pesky content scale factor multiplication
1 parent cae9640 commit f8fa5a8

File tree

1 file changed

+9
-13
lines changed

1 file changed

+9
-13
lines changed

core/2d/FastTMXLayer.cpp

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -135,21 +135,17 @@ void FastTMXLayer::draw(Renderer* renderer, const Mat4& transform, uint32_t flag
135135
updateTotalQuads();
136136

137137
auto cam = Camera::getVisitingCamera();
138-
if (flags != 0 || _dirty || _quadsDirty || !_cameraPositionDirty.fuzzyEquals(cam->getPosition(), _tileSet->_tileSize.x) ||
138+
if (flags != 0 || _dirty || _quadsDirty ||
139+
!_cameraPositionDirty.fuzzyEquals(cam->getPosition(), _tileSet->_tileSize.x) ||
139140
_cameraZoomDirty != cam->getZoom())
140141
{
141142
_cameraPositionDirty = cam->getPosition();
142-
auto zoom = _cameraZoomDirty = cam->getZoom();
143-
Vec2 s = _director->getVisibleSize();
144-
const Vec2& anchor = getAnchorPoint();
145-
auto rect = Rect(cam->getPositionX() - s.width * zoom * (anchor.x == 0.0f ? 0.5f : anchor.x),
146-
cam->getPositionY() - s.height * zoom * (anchor.y == 0.0f ? 0.5f : anchor.y),
147-
s.width * zoom, s.height * zoom);
148-
149-
rect.origin.x -= _tileSet->_tileSize.x;
150-
rect.origin.y -= _tileSet->_tileSize.y;
151-
rect.size.x += s.x * zoom / 2 + _tileSet->_tileSize.x * zoom;
152-
rect.size.y += s.y * zoom / 2 + _tileSet->_tileSize.y * zoom;
143+
auto zoom = _cameraZoomDirty = cam->getZoom();
144+
Vec2 s = _director->getVisibleSize();
145+
const Vec2& anchor = getAnchorPoint();
146+
auto rect = Rect(cam->getPositionX() - s.width * zoom * (anchor.x == 0.0f ? 0.5f : anchor.x),
147+
cam->getPositionY() - s.height * zoom * (anchor.y == 0.0f ? 0.5f : anchor.y), s.width * zoom,
148+
s.height * zoom);
153149

154150
Mat4 inv = transform;
155151
inv.inverse();
@@ -177,7 +173,7 @@ void FastTMXLayer::draw(Renderer* renderer, const Mat4& transform, uint32_t flag
177173

178174
void FastTMXLayer::updateTiles(const Rect& culledRect)
179175
{
180-
Rect visibleTiles = Rect(culledRect.origin, culledRect.size * _director->getContentScaleFactor());
176+
Rect visibleTiles = Rect(culledRect.origin, culledRect.size);
181177
Vec2 mapTileSize = AX_SIZE_PIXELS_TO_POINTS(_mapTileSize);
182178
Vec2 tileSize = AX_SIZE_PIXELS_TO_POINTS(_tileSet->_tileSize);
183179
Mat4 nodeToTileTransform = _tileToNodeTransform.getInversed();

0 commit comments

Comments
 (0)