[Scummvm-git-logs] scummvm master -> 55c09c989fa5c6564f594b815bf8f215daa573f7
sev-
noreply at scummvm.org
Fri Feb 27 21:43:47 UTC 2026
This automated email contains information about 7 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
52a2bc6488 DIRECTOR: Add bodyfun to detection table
8d2438f503 DIRECTOR: Unset _playDone after current script is destroyed
663ade5f73 DIRECTOR: Fix setting the fileName for a video
364c31032b DIRECTOR: Don't include puppeted sprites in frame copyback
d8e134e1ef DIRECTOR: Remove channel-to-frame copyback step
c9bb36de41 DIRECTOR: Fix typo preventing sprite script IDs from copying
55c09c989f DIRECTOR: Move digital video linking into Channel::replaceSprite
Commit: 52a2bc648828dc8edade384b328f3d515b60376a
https://github.com/scummvm/scummvm/commit/52a2bc648828dc8edade384b328f3d515b60376a
Author: Scott Percival (code at moral.net.au)
Date: 2026-02-27T22:43:28+01:00
Commit Message:
DIRECTOR: Add bodyfun to detection table
Changed paths:
engines/director/detection_tables.h
diff --git a/engines/director/detection_tables.h b/engines/director/detection_tables.h
index aa913e28c14..6d75d7590d1 100644
--- a/engines/director/detection_tables.h
+++ b/engines/director/detection_tables.h
@@ -102,6 +102,7 @@ static const PlainGameDescriptor directorGames[] = {
{ "blinkyy1", "Blinky Bill: Play and Learn - Year 1" },
{ "blockhead", "Blockhead" },
{ "bobcastle", "Bob the Builder: Bob's Castle Adventure" },
+ { "bodyfun", "Dr. Health'nstein's Body Fun" },
{ "bodypark", "Body Park" },
{ "brer", "Brer Rabbit and the Wonderful Tar Baby" },
{ "buzz1", "Buzz Lightyear 1st Grade" },
@@ -3902,6 +3903,9 @@ static const DirectorGameDescription gameDescriptions[] = {
WINDEMO2t_l("blownaway", "Demo", "DEMO.EXE", "db13582be83388b285f634b4165068ce", 745999,
"DEMO2.DXR", "39242284ad536ac5285fc6dfd239138f", 1694128, Common::DE_DEU, 404),
+ WINGAME1("bodyfun", "", "BODYFUN.EXE", "t:481f7df6bf4e2834497346fc3c2d2dfa", 731387, 404),
+ MACGAME1("bodyfun", "", "Dr. Health'nstein's Body Fun", "r:8b138db44d4421cc7294a9dc792ccf1b", 310303, 404),
+
MACGAME2("bookofnotes", "", "PROJECTOR", "r:77f4098988d5386794d1530065f514cd", 301669,
"ETHICSQKT", "r:9627d44e711729978427347962fdbb03", 5409, 400),
Commit: 8d2438f5033149304cfcbc0e4db60afe6f01ebb8
https://github.com/scummvm/scummvm/commit/8d2438f5033149304cfcbc0e4db60afe6f01ebb8
Author: Scott Percival (code at moral.net.au)
Date: 2026-02-27T22:43:28+01:00
Commit Message:
DIRECTOR: Unset _playDone after current script is destroyed
This is required for the startMovie script of the next movie to run (i.e. the
one you get kicked to when calling "play done").
Fixes returning from The Smasher(TM) in Dr. Health'nstein's Body Fun.
Confirmed to work with Cyber Grannies.
Changed paths:
engines/director/lingo/lingo.cpp
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 04bb552a964..ee491afd675 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -722,6 +722,9 @@ bool Lingo::execute(int targetFrame) {
while (_state->callstack.size()) {
popContext(true);
}
+ if (_playDone) {
+ _playDone = false;
+ }
}
_abort = false;
_freezeState = false;
Commit: 663ade5f73a5ac5bc748f422ee064a055b19d8f8
https://github.com/scummvm/scummvm/commit/663ade5f73a5ac5bc748f422ee064a055b19d8f8
Author: Scott Percival (code at moral.net.au)
Date: 2026-02-27T22:43:28+01:00
Commit Message:
DIRECTOR: Fix setting the fileName for a video
If the video is currently visible in a channel, the channel needs to be
updated.
Fixes Bag o' Guts minigame in Dr. Health'nstein's Body Fun.
Changed paths:
engines/director/castmember/digitalvideo.cpp
diff --git a/engines/director/castmember/digitalvideo.cpp b/engines/director/castmember/digitalvideo.cpp
index 1b439d4eefd..749490b7b25 100644
--- a/engines/director/castmember/digitalvideo.cpp
+++ b/engines/director/castmember/digitalvideo.cpp
@@ -679,6 +679,16 @@ void DigitalVideoCastMember::setField(int field, const Datum &d) {
case kTheDuration:
warning("DigitalVideoCastMember::setField(): Attempt to set read-only field %s of cast %d", g_lingo->entity2str(field), _castId);
return;
+ case kTheFileName:
+ // Update the filename, then force the video to be replaced.
+ // Channel dimensions are replaced by the video.
+ CastMember::setField(field, d);
+ loadVideoFromCast();
+ if (_channel) {
+ _channel->setWidth(_initialRect.width());
+ _channel->setHeight(_initialRect.height());
+ }
+ return;
case kTheFrameRate:
_frameRate = d.asInt();
setFrameRate(d.asInt());
Commit: 364c31032bc5637afcd8ed49237f24f1e51b714b
https://github.com/scummvm/scummvm/commit/364c31032bc5637afcd8ed49237f24f1e51b714b
Author: Scott Percival (code at moral.net.au)
Date: 2026-02-27T22:43:28+01:00
Commit Message:
DIRECTOR: Don't include puppeted sprites in frame copyback
Just before loading the next frame, we copy the current sprite
information into _currentFrame so that it can be overlaid with the next
delta. This is usually fine, however if the puppet flag is enabled on a
sprite we don't want to copy that back; the frame data is going to be
different, and we need to be able to switch to it using
puppetSprite(n, FALSE).
Fixes turning around in the lift in The Journeyman Project.
Changed paths:
engines/director/channel.cpp
engines/director/lingo/lingo-builtins.cpp
engines/director/score.cpp
engines/director/sprite.cpp
engines/director/sprite.h
diff --git a/engines/director/channel.cpp b/engines/director/channel.cpp
index 66a6d816216..e1636bf7fb1 100644
--- a/engines/director/channel.cpp
+++ b/engines/director/channel.cpp
@@ -596,88 +596,21 @@ void Channel::replaceSprite(Sprite *nextSprite) {
if (!nextSprite)
return;
- if (_sprite->_puppet) {
- // Whole sprite is in puppet mode.
- // The only thing we want to copy over is the script ID.
- nextSprite->_scriptId = _sprite->_scriptId;
- return;
- }
-
- bool widgetKeeped = _sprite->_cast && _widget;
-
- // if there's a video in the old sprite that's different, stop it before we continue
- if (_sprite->_castId != nextSprite->_castId && _sprite->_cast && _sprite->_cast->_type == kCastDigitalVideo) {
- ((DigitalVideoCastMember *)_sprite->_cast)->setChannel(nullptr);
- ((DigitalVideoCastMember *)_sprite->_cast)->stopVideo();
- ((DigitalVideoCastMember *)_sprite->_cast)->rewindVideo();
- }
-
- // update the _sprite we stored in channel, and point the originalSprite to the new one
+ bool hasWidget = _sprite->_cast && _widget;
// release the widget, because we may having the new one
if (_sprite->_cast && !canKeepWidget(_sprite, nextSprite)) {
- widgetKeeped = false;
_sprite->_cast->releaseWidget();
+ hasWidget = false;
}
+ int16 width = _sprite->_width;
+ int16 height = _sprite->_height;
- // If the cast member is the same, persist the editable flag
- bool editable = nextSprite->_editable;
- if (_sprite->_castId == nextSprite->_castId) {
- editable = _sprite->_editable;
- }
-
-
- int width = _sprite->_width;
- int height = _sprite->_height;
- bool immediate = _sprite->_immediate;
-
- // Copy over all the sprite fields from one to another.
- // For D6+, exclude individual fields with autopuppet switched on
- _sprite->_spriteType = nextSprite->_spriteType;
- _sprite->_enabled = nextSprite->_enabled;
- if (!_sprite->getAutoPuppet(kAPInk)) {
- _sprite->_inkData = nextSprite->_inkData;
- _sprite->_ink = nextSprite->_ink;
- _sprite->_trails = nextSprite->_trails;
- _sprite->_stretch = nextSprite->_stretch;
- }
- if (!_sprite->getAutoPuppet(kAPForeColor)) {
- _sprite->_foreColor = nextSprite->_foreColor;
- }
- if (!_sprite->getAutoPuppet(kAPBackColor)) {
- _sprite->_backColor = nextSprite->_backColor;
- }
- if (!_sprite->getAutoPuppet(kAPCast)) {
- _sprite->_castId = nextSprite->_castId;
- _sprite->_cast = nextSprite->_cast;
- _sprite->_spriteListIdx = nextSprite->_spriteListIdx;
- }
- if (!_sprite->getAutoPuppet(kAPLoc)) {
- _sprite->_startPoint = nextSprite->_startPoint;
- }
- if (!_sprite->getAutoPuppet(kAPHeight)) {
- _sprite->_height = nextSprite->_height;
- }
- if (!_sprite->getAutoPuppet(kAPWidth)) {
- _sprite->_width = nextSprite->_width;
- }
- if (!_sprite->getAutoPuppet(kAPMoveable)) {
- _sprite->_colorcode = nextSprite->_colorcode;
- _sprite->_editable = nextSprite->_editable;
- _sprite->_moveable = nextSprite->_moveable;
- }
- _sprite->_blendAmount = nextSprite->_blendAmount;
- _sprite->_thickness = nextSprite->_thickness;
- _sprite->_pattern = nextSprite->_pattern;
-
- // Persist the immediate flag
- _sprite->_immediate = immediate;
-
- _sprite->_editable = editable;
+ _sprite->replaceFrom(nextSprite);
// TODO: auto expand text size is meaning less for us, not all text
// since we are using initialRect for the text cast member now, then the sprite size is meaning less for us.
// thus, we keep the _sprite size here
- if (hasTextCastMember(_sprite) && widgetKeeped) {
+ if (hasTextCastMember(_sprite) && hasWidget) {
_sprite->_width = width;
_sprite->_height = height;
}
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 95a353425f0..2372573f815 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -3235,6 +3235,7 @@ void LB::b_puppetSprite(int nargs) {
// puppetSprite set to FALSE, copy back sprite data from frame cache
Channel *chan = sc->getChannelById(spriteId);
movie->getWindow()->addDirtyRect(chan->getBbox());
+ chan->_dirty = true;
chan->setClean(sc->_currentFrame->_sprites[spriteId]);
chan->_dirty = true;
}
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 8bc28da87d3..d34ecd633c8 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -511,8 +511,10 @@ void Score::updateCurrentFrame() {
// This is specifically because of delta updates; loading the next frame
// in the score applies delta changes to _currentFrame, and ideally we want
// those deltas to be applied over the top of whatever the current state is.
+ // Importantly we don't want to copy back anything that is overridden
+ // by our friend the puppet flag.
for (uint ch = 0; ch < _channels.size(); ch++)
- *_currentFrame->_sprites[ch] = *_channels[ch]->_sprite;
+ _currentFrame->_sprites[ch]->replaceFrom(_channels[ch]->_sprite, _channels[ch]->_sprite);
// this copies in the frame data and updates _curFrameNumber
loadFrame(nextFrameNumberToLoad, true);
diff --git a/engines/director/sprite.cpp b/engines/director/sprite.cpp
index e140e184483..79b93ccda2a 100644
--- a/engines/director/sprite.cpp
+++ b/engines/director/sprite.cpp
@@ -27,6 +27,7 @@
#include "director/score.h"
#include "director/sprite.h"
#include "director/castmember/castmember.h"
+#include "director/castmember/digitalvideo.h"
#include "director/castmember/shape.h"
#include "director/castmember/text.h"
@@ -611,6 +612,82 @@ Common::String Sprite::formatInfo() {
_puppet, _moveable);
}
+void Sprite::replaceFrom(Sprite *nextSprite, Sprite *puppetSrc) {
+ if (!nextSprite)
+ return;
+
+ // Usually you only want to copy data into the sprite
+ // if its own puppet flag is set.
+ if (!puppetSrc)
+ puppetSrc = this;
+
+ if (puppetSrc->_puppet) {
+ // Whole sprite is in puppet mode.
+ // The only thing we want to copy over is the script ID.
+ _scriptId = nextSprite->_scriptId;
+ return;
+ }
+
+ // if there's a video in the old sprite that's different, stop it before we continue
+ if (_castId != nextSprite->_castId && _cast && _cast->_type == kCastDigitalVideo) {
+ ((DigitalVideoCastMember *)_cast)->setChannel(nullptr);
+ ((DigitalVideoCastMember *)_cast)->stopVideo();
+ ((DigitalVideoCastMember *)_cast)->rewindVideo();
+ }
+
+ // If the cast member is the same, persist the editable flag
+ bool editable = nextSprite->_editable;
+ if (_castId == nextSprite->_castId) {
+ editable = _editable;
+ }
+
+ bool immediate = _immediate;
+
+ // Copy over all the sprite fields from one to another.
+ // For D6+, exclude individual fields with autopuppet switched on
+ _spriteType = nextSprite->_spriteType;
+ _enabled = nextSprite->_enabled;
+ if (!getAutoPuppet(kAPInk)) {
+ _inkData = nextSprite->_inkData;
+ _ink = nextSprite->_ink;
+ _trails = nextSprite->_trails;
+ _stretch = nextSprite->_stretch;
+ }
+ if (!getAutoPuppet(kAPForeColor)) {
+ _foreColor = nextSprite->_foreColor;
+ }
+ if (!getAutoPuppet(kAPBackColor)) {
+ _backColor = nextSprite->_backColor;
+ }
+ if (!getAutoPuppet(kAPCast)) {
+ _castId = nextSprite->_castId;
+ _cast = nextSprite->_cast;
+ _spriteListIdx = nextSprite->_spriteListIdx;
+ }
+ if (!getAutoPuppet(kAPLoc)) {
+ _startPoint = nextSprite->_startPoint;
+ }
+ if (!getAutoPuppet(kAPHeight)) {
+ _height = nextSprite->_height;
+ }
+ if (!getAutoPuppet(kAPWidth)) {
+ _width = nextSprite->_width;
+ }
+ if (!getAutoPuppet(kAPMoveable)) {
+ _colorcode = nextSprite->_colorcode;
+ _editable = nextSprite->_editable;
+ _moveable = nextSprite->_moveable;
+ }
+ _blendAmount = nextSprite->_blendAmount;
+ _thickness = nextSprite->_thickness;
+ _pattern = nextSprite->_pattern;
+
+ // Persist the immediate flag
+ _immediate = immediate;
+
+ _editable = editable;
+
+}
} // End of namespace Director
diff --git a/engines/director/sprite.h b/engines/director/sprite.h
index c997478a2e6..b88a377506f 100644
--- a/engines/director/sprite.h
+++ b/engines/director/sprite.h
@@ -111,6 +111,8 @@ public:
Common::String formatInfo();
+ void replaceFrom(Sprite *nextSprite, Sprite *puppetSrc = nullptr);
+
Frame *_frame;
Score *_score;
Movie *_movie;
Commit: d8e134e1ef3920c8efdd25f33683630978b8a546
https://github.com/scummvm/scummvm/commit/d8e134e1ef3920c8efdd25f33683630978b8a546
Author: Scott Percival (code at moral.net.au)
Date: 2026-02-27T22:43:28+01:00
Commit Message:
DIRECTOR: Remove channel-to-frame copyback step
Now that Score::_currentFrame is a pure representation of the current
score frame, we don't need to worry about mixing in channel changes
as Sprite::replaceFrom ensures that they are preserved.
Changed paths:
engines/director/score.cpp
engines/director/sprite.cpp
engines/director/sprite.h
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index d34ecd633c8..cc2fd184062 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -508,18 +508,11 @@ void Score::updateCurrentFrame() {
}
// Load the current sprite information into the _currentFrame data store.
- // This is specifically because of delta updates; loading the next frame
- // in the score applies delta changes to _currentFrame, and ideally we want
- // those deltas to be applied over the top of whatever the current state is.
- // Importantly we don't want to copy back anything that is overridden
- // by our friend the puppet flag.
- for (uint ch = 0; ch < _channels.size(); ch++)
- _currentFrame->_sprites[ch]->replaceFrom(_channels[ch]->_sprite, _channels[ch]->_sprite);
-
- // this copies in the frame data and updates _curFrameNumber
+ // This copies in the frame data and updates _curFrameNumber.
loadFrame(nextFrameNumberToLoad, true);
- // finally, update the channels and buffer any dirty rectangles
+ // Finally, update the channels and buffer any dirty rectangles.
+ // This will ignore any channel data that is overridden with the puppet flag.
updateSprites(kRenderModeNormal, true);
} else if (!_vm->_playbackPaused) {
// Loading the same frame; e.g. "go to frame".
diff --git a/engines/director/sprite.cpp b/engines/director/sprite.cpp
index 79b93ccda2a..16fce6ef23c 100644
--- a/engines/director/sprite.cpp
+++ b/engines/director/sprite.cpp
@@ -612,16 +612,11 @@ Common::String Sprite::formatInfo() {
_puppet, _moveable);
}
-void Sprite::replaceFrom(Sprite *nextSprite, Sprite *puppetSrc) {
+void Sprite::replaceFrom(Sprite *nextSprite) {
if (!nextSprite)
return;
- // Usually you only want to copy data into the sprite
- // if its own puppet flag is set.
- if (!puppetSrc)
- puppetSrc = this;
-
- if (puppetSrc->_puppet) {
+ if (_puppet) {
// Whole sprite is in puppet mode.
// The only thing we want to copy over is the script ID.
_scriptId = nextSprite->_scriptId;
diff --git a/engines/director/sprite.h b/engines/director/sprite.h
index b88a377506f..3a467e8f69c 100644
--- a/engines/director/sprite.h
+++ b/engines/director/sprite.h
@@ -111,7 +111,7 @@ public:
Common::String formatInfo();
- void replaceFrom(Sprite *nextSprite, Sprite *puppetSrc = nullptr);
+ void replaceFrom(Sprite *nextSprite);
Frame *_frame;
Score *_score;
Commit: c9bb36de41a900d96a82ec4520bd7651d58a24ae
https://github.com/scummvm/scummvm/commit/c9bb36de41a900d96a82ec4520bd7651d58a24ae
Author: Scott Percival (code at moral.net.au)
Date: 2026-02-27T22:43:28+01:00
Commit Message:
DIRECTOR: Fix typo preventing sprite script IDs from copying
Fixes intro sequence in Spaceship Warlock.
Changed paths:
engines/director/sprite.cpp
diff --git a/engines/director/sprite.cpp b/engines/director/sprite.cpp
index 16fce6ef23c..b57b9ea87fd 100644
--- a/engines/director/sprite.cpp
+++ b/engines/director/sprite.cpp
@@ -616,10 +616,11 @@ void Sprite::replaceFrom(Sprite *nextSprite) {
if (!nextSprite)
return;
+ _scriptId = nextSprite->_scriptId;
+
if (_puppet) {
// Whole sprite is in puppet mode.
// The only thing we want to copy over is the script ID.
- _scriptId = nextSprite->_scriptId;
return;
}
Commit: 55c09c989fa5c6564f594b815bf8f215daa573f7
https://github.com/scummvm/scummvm/commit/55c09c989fa5c6564f594b815bf8f215daa573f7
Author: Scott Percival (code at moral.net.au)
Date: 2026-02-27T22:43:28+01:00
Commit Message:
DIRECTOR: Move digital video linking into Channel::replaceSprite
Previously it was possible for a new video to reuse the same channel,
and have the teardown code for the old video stop the playback of the
new video.
Fixes the conversation with the old lady at the river in Wrath of the
Gods.
Changed paths:
engines/director/castmember/digitalvideo.cpp
engines/director/channel.cpp
engines/director/sprite.cpp
diff --git a/engines/director/castmember/digitalvideo.cpp b/engines/director/castmember/digitalvideo.cpp
index 749490b7b25..305526afc20 100644
--- a/engines/director/castmember/digitalvideo.cpp
+++ b/engines/director/castmember/digitalvideo.cpp
@@ -379,7 +379,7 @@ void DigitalVideoCastMember::startVideo() {
else
_video->start();
- debugC(2, kDebugImages, "STARTING VIDEO %s", _filename.c_str());
+ debugC(2, kDebugImages, "STARTING VIDEO %s %d/%d", _filename.c_str(), getMovieCurrentTime(), getMovieTotalTime());
if (_channel && _channel->_stopTime == 0)
_channel->_stopTime = getMovieTotalTime();
diff --git a/engines/director/channel.cpp b/engines/director/channel.cpp
index e1636bf7fb1..0909843da10 100644
--- a/engines/director/channel.cpp
+++ b/engines/director/channel.cpp
@@ -474,19 +474,6 @@ void Channel::setClean(Sprite *nextSprite, bool partial) {
bool spriteTypeChanged = _sprite->_spriteType != nextSprite->_spriteType;
if (nextSprite) {
- if (nextSprite->_cast && (_dirty || _sprite->_castId != nextSprite->_castId)) {
- if (_sprite->_castId != nextSprite->_castId && nextSprite->_cast->_type == kCastDigitalVideo) {
- if (((DigitalVideoCastMember *)nextSprite->_cast)->loadVideoFromCast()) {
- _movieTime = 0;
- ((DigitalVideoCastMember *)nextSprite->_cast)->setChannel(this);
- ((DigitalVideoCastMember *)nextSprite->_cast)->startVideo();
- }
- } else if (nextSprite->_cast->_type == kCastFilmLoop || nextSprite->_cast->_type == kCastMovie) {
- // brand new film loop, reset the frame counter.
- _filmLoopFrame = 1;
- }
- }
-
// for the non-puppet QDShape, since we won't use isDirty to check whether the QDShape is changed.
// so we may always keep the sprite info because we need it to draw QDShape.
if (_sprite->_puppet || _sprite->_autoPuppet || (!nextSprite->isQDShape() && partial)) {
@@ -605,6 +592,27 @@ void Channel::replaceSprite(Sprite *nextSprite) {
int16 width = _sprite->_width;
int16 height = _sprite->_height;
+ if (!(_sprite->_puppet || _sprite->getAutoPuppet(kAPCast)) && (_sprite->_castId != nextSprite->_castId)) {
+ // if there's a video in the old sprite that's different, stop it before we continue
+ if (_sprite->_cast && _sprite->_cast->_type == kCastDigitalVideo) {
+ ((DigitalVideoCastMember *)_sprite->_cast)->setChannel(nullptr);
+ ((DigitalVideoCastMember *)_sprite->_cast)->stopVideo();
+ ((DigitalVideoCastMember *)_sprite->_cast)->rewindVideo();
+ }
+ // if there's a video in the new sprite that's different, start it before we continue
+ if (nextSprite->_cast && nextSprite->_cast->_type == kCastDigitalVideo) {
+ if (((DigitalVideoCastMember *)nextSprite->_cast)->loadVideoFromCast()) {
+ _movieTime = 0;
+ ((DigitalVideoCastMember *)nextSprite->_cast)->setChannel(this);
+ ((DigitalVideoCastMember *)nextSprite->_cast)->startVideo();
+ }
+ }
+ // if there's a brand new film loop in the new sprite, reset the frame counter
+ if (nextSprite->_cast && nextSprite->_cast->_type == kCastFilmLoop) {
+ _filmLoopFrame = 1;
+ }
+ }
+
_sprite->replaceFrom(nextSprite);
// TODO: auto expand text size is meaning less for us, not all text
diff --git a/engines/director/sprite.cpp b/engines/director/sprite.cpp
index b57b9ea87fd..ba710450836 100644
--- a/engines/director/sprite.cpp
+++ b/engines/director/sprite.cpp
@@ -624,13 +624,6 @@ void Sprite::replaceFrom(Sprite *nextSprite) {
return;
}
- // if there's a video in the old sprite that's different, stop it before we continue
- if (_castId != nextSprite->_castId && _cast && _cast->_type == kCastDigitalVideo) {
- ((DigitalVideoCastMember *)_cast)->setChannel(nullptr);
- ((DigitalVideoCastMember *)_cast)->stopVideo();
- ((DigitalVideoCastMember *)_cast)->rewindVideo();
- }
-
// If the cast member is the same, persist the editable flag
bool editable = nextSprite->_editable;
if (_castId == nextSprite->_castId) {
More information about the Scummvm-git-logs
mailing list