Skip to content

Commit 281547e

Browse files
committed
fix #65: Don't use update methods during initial setup of RenderedTarget
Fixes #65
1 parent dd38f8f commit 281547e

File tree

2 files changed

+15
-12
lines changed

2 files changed

+15
-12
lines changed

src/renderedtarget.cpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -211,14 +211,17 @@ void RenderedTarget::setSpriteModel(SpriteModel *newSpriteModel)
211211
Sprite *sprite = m_spriteModel->sprite();
212212

213213
if (sprite) {
214+
m_x = sprite->x();
215+
m_y = sprite->y();
216+
m_size = sprite->size() / 100;
217+
m_direction = sprite->direction();
218+
m_rotationStyle = sprite->rotationStyle();
214219
loadCostume(sprite->currentCostume().get());
215220
updateVisibility(sprite->visible());
216-
updateX(sprite->x());
217-
updateY(sprite->y());
218-
updateSize(sprite->size());
219-
updateDirection(sprite->direction());
220-
updateRotationStyle(sprite->rotationStyle());
221221
updateLayerOrder(sprite->layerOrder());
222+
calculateSize();
223+
calculatePos();
224+
calculateRotation();
222225
}
223226
}
224227
emit spriteModelChanged();

test/renderedtarget/renderedtarget_test.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -89,21 +89,21 @@ TEST_F(RenderedTargetTest, UpdateMethods)
8989
sprite.setRotationStyle(Sprite::RotationStyle::AllAround);
9090
sprite.setDirection(-67.16);
9191
sprite.setSize(143.98);
92-
sprite.setX(-67.94);
93-
sprite.setY(121.76);
92+
sprite.setX(0);
93+
sprite.setY(0);
9494
sprite.setLayerOrder(3);
9595
SpriteModel spriteModel;
9696
sprite.setInterface(&spriteModel);
9797

98-
EXPECT_CALL(engine, stageWidth()).Times(3).WillRepeatedly(Return(480));
99-
EXPECT_CALL(engine, stageHeight()).Times(3).WillRepeatedly(Return(360));
98+
EXPECT_CALL(engine, stageWidth()).WillOnce(Return(480));
99+
EXPECT_CALL(engine, stageHeight()).WillOnce(Return(360));
100100
target.setSpriteModel(&spriteModel);
101101
target.beforeRedraw();
102102

103103
ASSERT_EQ(std::round(target.width() * 100) / 100, 2.3);
104104
ASSERT_EQ(std::round(target.height() * 100) / 100, 3.46);
105-
ASSERT_EQ(std::round(target.x() * 100) / 100, 185.31);
106-
ASSERT_EQ(std::round(target.y() * 100) / 100, 16.77);
105+
ASSERT_EQ(std::round(target.x() * 100) / 100, 253.25);
106+
ASSERT_EQ(std::round(target.y() * 100) / 100, 138.53);
107107
ASSERT_EQ(target.z(), 3);
108108
ASSERT_EQ(target.rotation(), -157.16);
109109
ASSERT_EQ(std::round(target.transformOriginPoint().x() * 100) / 100, -13.25);
@@ -124,7 +124,7 @@ TEST_F(RenderedTargetTest, UpdateMethods)
124124
EXPECT_CALL(engine, stageHeight()).WillOnce(Return(360));
125125
target.updateX(12.5);
126126
ASSERT_EQ(std::round(target.x() * 100) / 100, 265.75);
127-
ASSERT_EQ(std::round(target.y() * 100) / 100, 16.77);
127+
ASSERT_EQ(std::round(target.y() * 100) / 100, 138.53);
128128

129129
// Y
130130
EXPECT_CALL(engine, stageWidth()).WillOnce(Return(480));

0 commit comments

Comments
 (0)