diff --git a/engines/director/castmember/filmloop.cpp b/engines/director/castmember/filmloop.cpp index 828d5636cd7..c771a63ef5c 100644 --- a/engines/director/castmember/filmloop.cpp +++ b/engines/director/castmember/filmloop.cpp @@ -91,14 +91,17 @@ Common::Array *FilmLoopCastMember::getSubChannels(Common::Rect &bbox, C int16 width = src._width * widgetRect.width() / _initialRect.width(); int16 height = src._height * widgetRect.height() / _initialRect.height(); + // Re-inject the translated position into the Sprite. + // This saves the hassle of having to force the Channel to be in puppet mode. + src._width = width; + src._height = height; + src._startPoint = Common::Point(absX, absY); + src._stretch = true; + // Film loop frames are constructed as a series of Channels, much like how a normal frame // is rendered by the Score. We don't include a pointer to the current Score here, // that's only for querying the constraint channel which is not used. Channel chan(nullptr, &src); - chan._currentPoint = Common::Point(absX, absY); - chan._width = width; - chan._height = height; - _subchannels.push_back(chan); } diff --git a/engines/director/window.cpp b/engines/director/window.cpp index a21e27207b9..36e9d2e079e 100644 --- a/engines/director/window.cpp +++ b/engines/director/window.cpp @@ -302,7 +302,11 @@ void Window::inkBlitFrom(Channel *channel, Common::Rect destRect, Graphics::Mana uint32 renderStartTime = 0; if (debugChannelSet(8, kDebugImages)) { CastType castType = channel->_sprite->_cast ? channel->_sprite->_cast->_type : kCastTypeNull; - debugC(8, kDebugImages, "Window::inkBlitFrom(): updating %dx%d @ %d,%d, type: %s, ink: %d", destRect.width(), destRect.height(), destRect.left, destRect.top, castType2str(castType), channel->_sprite->_ink); + debugC(8, kDebugImages, "Window::inkBlitFrom(): updating %dx%d @ %d,%d -> %dx%d @ %d,%d, type: %s, cast: %s, ink: %d", + srcRect.width(), srcRect.height(), srcRect.left, srcRect.top, + destRect.width(), destRect.height(), destRect.left, destRect.top, + castType2str(castType), channel->_sprite->_castId.asString().c_str(), + channel->_sprite->_ink); renderStartTime = g_system->getMillis(); }