EXT-4026 parcel media does not autoplay after arriving by teleport

meow-7.2.2
Tofu Linden 2010-01-08 15:57:33 -08:00
parent e827c8a5eb
commit 6aa46cc53f
2 changed files with 17 additions and 1 deletions

View File

@ -35,6 +35,7 @@
#include "llviewerparcelmedia.h"
#include "llviewercontrol.h"
#include "llviewermedia.h"
#include "llviewerregion.h"
#include "llparcel.h"
#include "llviewerparcelmgr.h"
#include "lluuid.h"
@ -48,6 +49,8 @@ const F32 AUTOPLAY_SPEED = 0.1f; // how slow should the agent be moving t
LLViewerParcelMediaAutoPlay::LLViewerParcelMediaAutoPlay() :
LLEventTimer(1),
mLastParcelID(-1),
mPlayed(FALSE),
mTimeInParcel(0)
{
@ -81,9 +84,18 @@ void LLViewerParcelMediaAutoPlay::playStarted()
BOOL LLViewerParcelMediaAutoPlay::tick()
{
LLParcel *this_parcel = NULL;
LLViewerRegion *this_region = NULL;
std::string this_media_url;
LLUUID this_media_texture_id;
S32 this_parcel_id = 0;
LLUUID this_region_id;
this_region = gAgent.getRegion();
if (this_region)
{
this_region_id = this_region->getRegionID();
}
this_parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
@ -96,12 +108,14 @@ BOOL LLViewerParcelMediaAutoPlay::tick()
this_parcel_id = this_parcel->getLocalID();
}
if (this_parcel_id != mLastParcelID)
if (this_parcel_id != mLastParcelID ||
this_region_id != mLastRegionID)
{
// we've entered a new parcel
mPlayed = FALSE; // we haven't autoplayed yet
mTimeInParcel = 0; // reset our timer
mLastParcelID = this_parcel_id;
mLastRegionID = this_region_id;
}
mTimeInParcel += mPeriod; // increase mTimeInParcel by the amount of time between ticks

View File

@ -34,6 +34,7 @@
#define LLVIEWERPARCELMEDIAAUTOPLAY_H
#include "lltimer.h"
#include "lluuid.h"
// timer to automatically play media
class LLViewerParcelMediaAutoPlay : LLEventTimer
@ -47,6 +48,7 @@ class LLViewerParcelMediaAutoPlay : LLEventTimer
private:
S32 mLastParcelID;
LLUUID mLastRegionID;
BOOL mPlayed;
F32 mTimeInParcel;
};