| 487 | } |
| 488 | |
| 489 | bool VideoNode::update(double deltaTime) { |
| 490 | auto videoData = s_cast<VideoData*>(_videoData.get()); |
| 491 | if (!videoData) return true; |
| 492 | if (!_paused && videoData->frameRate > 0.0f) { |
| 493 | _frameAccumulator += deltaTime; |
| 494 | double frameTime = 1.0 / videoData->frameRate; |
| 495 | if (_frameAccumulator >= frameTime) { |
| 496 | _frameAccumulator -= frameTime; |
| 497 | if (UpdateFlag::Stop == updateTexture()) { |
| 498 | return true; |
| 499 | } |
| 500 | } |
| 501 | } |
| 502 | return Sprite::update(deltaTime); |
| 503 | } |
| 504 | |
| 505 | NS_DORA_END |