Skip to content

Commit

Permalink
revert certain changes, add tileSize.put calls
Browse files Browse the repository at this point in the history
  • Loading branch information
Geokureli authored Apr 13, 2024
1 parent 0b3fa64 commit 902bff7
Showing 1 changed file with 41 additions and 40 deletions.
81 changes: 41 additions & 40 deletions flixel/addons/display/FlxBackdrop.hx
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,9 @@ class FlxBackdrop extends FlxSprite
*/
public var blitMode:BackdropBlitMode = AUTO;

var _tileSize:FlxPoint = FlxPoint.get();
var _tileMatrix:FlxMatrix = new FlxMatrix();
var _blitOffset:FlxPoint = FlxPoint.get();
var _blitGraphic:FlxGraphic = null;
var _tileMatrix:FlxMatrix = new FlxMatrix();
var _prevDrawParams:BackdropDrawParams =
{
graphicKey:null,
Expand Down Expand Up @@ -85,7 +84,6 @@ class FlxBackdrop extends FlxSprite
override function destroy():Void
{
spacing = FlxDestroyUtil.put(spacing);
_tileSize = FlxDestroyUtil.put(_tileSize);
_blitOffset = FlxDestroyUtil.put(_blitOffset);
_blitGraphic = FlxDestroyUtil.destroy(_blitGraphic);
_tileMatrix = null;
Expand Down Expand Up @@ -204,9 +202,9 @@ class FlxBackdrop extends FlxSprite
final frame = drawBlit ? _blitGraphic.imageFrame.frame : _frame;

// The distance between repeated sprites, in screen space
_tileSize.set(frame.frame.width, frame.frame.height);
final tileSize = FlxPoint.get(frame.frame.width, frame.frame.height);
if (drawDirect)
_tileSize.addPoint(spacing);
tileSize.addPoint(spacing);

getScreenPosition(_point, camera).subtractPoint(offset);
var tilesX = 1;
Expand All @@ -216,18 +214,18 @@ class FlxBackdrop extends FlxSprite
final viewMargins = camera.getViewMarginRect();
if (repeatAxes.x)
{
final left = modMin(_point.x + frameWidth, _tileSize.x, viewMargins.left) - frameWidth;
final right = modMax(_point.x, _tileSize.x, viewMargins.right) + _tileSize.x;
tilesX = Math.round((right - left) / _tileSize.x);
final left = modMin(_point.x + frameWidth, tileSize.x, viewMargins.left) - frameWidth;
final right = modMax(_point.x, tileSize.x, viewMargins.right) + tileSize.x;
tilesX = Math.round((right - left) / tileSize.x);
final origTileSizeX = frameWidth + spacing.x;
_point.x = modMin(_point.x + frameWidth, origTileSizeX, viewMargins.left) - frameWidth;
}

if (repeatAxes.y)
{
final top = modMin(_point.y + frameHeight, _tileSize.y, viewMargins.top) - frameHeight;
final bottom = modMax(_point.y, _tileSize.y, viewMargins.bottom) + _tileSize.y;
tilesY = Math.round((bottom - top) / _tileSize.y);
final top = modMin(_point.y + frameHeight, tileSize.y, viewMargins.top) - frameHeight;
final bottom = modMax(_point.y, tileSize.y, viewMargins.bottom) + tileSize.y;
tilesY = Math.round((bottom - top) / tileSize.y);
final origTileSizeY = frameHeight + spacing.y;
_point.y = modMin(_point.y + frameHeight, origTileSizeY, viewMargins.top) - frameHeight;
}
Expand All @@ -247,7 +245,7 @@ class FlxBackdrop extends FlxSprite
for (tileY in 0...tilesY)
{
// _point.copyToFlash(_flashPoint);
_flashPoint.setTo(_point.x + _tileSize.x * tileX, _point.y + _tileSize.y * tileY);
_flashPoint.setTo(_point.x + tileSize.x * tileX, _point.y + tileSize.y * tileY);

if (isPixelPerfectRender(camera))
{
Expand All @@ -260,6 +258,7 @@ class FlxBackdrop extends FlxSprite
}
}

tileSize.put();
camera.buffer.unlock();
}

Expand All @@ -277,11 +276,14 @@ class FlxBackdrop extends FlxSprite

frame.prepareMatrix(_matrix, FlxFrameAngle.ANGLE_0, checkFlipX(), checkFlipY());
_matrix.translate(-origin.x, -origin.y);


// The distance between repeated sprites, in screen space
final tileSize = FlxPoint.get(frame.frame.width, frame.frame.height);

if (drawDirect)
{
// The distance between repeated sprites, in screen space
_tileSize.set(
tileSize.set
(
(frame.frame.width + spacing.x) * scale.x,
(frame.frame.height + spacing.y) * scale.y
);
Expand All @@ -296,10 +298,6 @@ class FlxBackdrop extends FlxSprite
_matrix.rotateWithTrig(_cosAngle, _sinAngle);
}
}
else
{
_tileSize.set(frame.frame.width, frame.frame.height);
}

var drawItem = null;
if (FlxG.renderTile)
Expand All @@ -316,39 +314,41 @@ class FlxBackdrop extends FlxSprite
getScreenPosition(_point, camera).subtractPoint(offset);
var tilesX = 1;
var tilesY = 1;
final viewMargins = camera.getViewMarginRect();
final bounds = getScreenBounds(camera);
if (repeatAxes.x)
if (repeatAxes != NONE)
{
final origTileSizeX = (frameWidth + spacing.x) * scale.x;
final left = modMin(bounds.right, origTileSizeX, viewMargins.left) - bounds.width;
final right = modMax(bounds.left, origTileSizeX, viewMargins.right) + origTileSizeX;
tilesX = Math.round((right - left) / _tileSize.x);
_point.x = left + _point.x - bounds.x;
}
final viewMargins = camera.getViewMarginRect();
final bounds = getScreenBounds(camera);
if (repeatAxes.x)
{
final origTileSizeX = (frameWidth + spacing.x) * scale.x;
final left = modMin(bounds.right, origTileSizeX, viewMargins.left) - bounds.width;
final right = modMax(bounds.left, origTileSizeX, viewMargins.right) + origTileSizeX;
tilesX = Math.round((right - left) / tileSize.x);
_point.x = left + _point.x - bounds.x;
}

if (repeatAxes.y)
{
final origTileSizeY = (frameHeight + spacing.y) * scale.y;
final top = modMin(bounds.bottom, origTileSizeY, viewMargins.top) - bounds.height;
final bottom = modMax(bounds.top, origTileSizeY, viewMargins.bottom) + origTileSizeY;
tilesY = Math.round((bottom - top) / _tileSize.y);
_point.y = top + _point.y - bounds.y;
if (repeatAxes.y)
{
final origTileSizeY = (frameHeight + spacing.y) * scale.y;
final top = modMin(bounds.bottom, origTileSizeY, viewMargins.top) - bounds.height;
final bottom = modMax(bounds.top, origTileSizeY, viewMargins.bottom) + origTileSizeY;
tilesY = Math.round((bottom - top) / tileSize.y);
_point.y = top + _point.y - bounds.y;
}
viewMargins.put();
bounds.put();
}
viewMargins.put();
bounds.put();

_point.addPoint(origin);
if (drawBlit)
_point.addPoint(_blitOffset);

for (tileX in 0...tilesX)
{
for (tileY in 0...tilesY)
{
_tileMatrix.copyFrom(_matrix);

_tileMatrix.translate(_point.x + (_tileSize.x * tileX), _point.y + (_tileSize.y * tileY));
_tileMatrix.translate(_point.x + (tileSize.x * tileX), _point.y + (tileSize.y * tileY));

if (isPixelPerfectRender(camera))
{
Expand All @@ -368,6 +368,7 @@ class FlxBackdrop extends FlxSprite
}
}

tileSize.put();
if (FlxG.renderBlit)
camera.buffer.unlock();
}
Expand Down

0 comments on commit 902bff7

Please sign in to comment.