Reset cycle timer of AO if manually switching pose + more refactoring
parent
8a52c735da
commit
87c11699b8
|
|
@ -35,7 +35,6 @@
|
|||
#include "llnotificationsutil.h"
|
||||
#include "llspinctrl.h"
|
||||
#include "llviewercontrol.h"
|
||||
#include "llviewerinventory.h"
|
||||
#include "utilitybar.h"
|
||||
|
||||
FloaterAO::FloaterAO(const LLSD& key)
|
||||
|
|
@ -51,10 +50,6 @@ FloaterAO::FloaterAO(const LLSD& key)
|
|||
mEventTimer.stop();
|
||||
}
|
||||
|
||||
FloaterAO::~FloaterAO()
|
||||
{
|
||||
}
|
||||
|
||||
void FloaterAO::reloading(bool reload)
|
||||
{
|
||||
if (reload)
|
||||
|
|
@ -283,9 +278,7 @@ bool FloaterAO::postBuild()
|
|||
mPreviousButtonSmall->setCommitCallback(boost::bind(&FloaterAO::onClickPrevious, this));
|
||||
mNextButtonSmall->setCommitCallback(boost::bind(&FloaterAO::onClickNext, this));
|
||||
|
||||
// <AS:Chanayane> Double click on animation in AO
|
||||
mAnimationList->setDoubleClickCallback(boost::bind(&FloaterAO::onDoubleClick, this));
|
||||
// </AS:Chanayane>
|
||||
|
||||
updateSmart();
|
||||
|
||||
|
|
@ -777,15 +770,14 @@ void FloaterAO::onChangeCycleTime()
|
|||
|
||||
void FloaterAO::onClickPrevious()
|
||||
{
|
||||
AOEngine::instance().cycle(AOEngine::CyclePrevious);
|
||||
AOEngine::instance().cycle(AOEngine::CyclePrevious, true);
|
||||
}
|
||||
|
||||
void FloaterAO::onClickNext()
|
||||
{
|
||||
AOEngine::instance().cycle(AOEngine::CycleNext);
|
||||
AOEngine::instance().cycle(AOEngine::CycleNext, true);
|
||||
}
|
||||
|
||||
// <AS:Chanayane> Double click on animation in AO
|
||||
void FloaterAO::onDoubleClick()
|
||||
{
|
||||
LLScrollListItem* item = mAnimationList->getFirstSelected();
|
||||
|
|
@ -817,7 +809,6 @@ void FloaterAO::onDoubleClick()
|
|||
|
||||
AOEngine::instance().playAnimation(*animUUID);
|
||||
}
|
||||
// </AS:Chanayane>
|
||||
|
||||
void FloaterAO::onClickMore()
|
||||
{
|
||||
|
|
@ -872,7 +863,6 @@ void FloaterAO::onAnimationChanged(const LLUUID& animation)
|
|||
|
||||
if (mCurrentBoldItem)
|
||||
{
|
||||
// <AS:Chanayane> Safer casts
|
||||
if (LLScrollListCell* icon_cell = mCurrentBoldItem->getColumn(0))
|
||||
{
|
||||
if (LLScrollListIcon* icon = dynamic_cast<LLScrollListIcon*>(icon_cell))
|
||||
|
|
@ -888,7 +878,6 @@ void FloaterAO::onAnimationChanged(const LLUUID& animation)
|
|||
text->setFontStyle(LLFontGL::NORMAL);
|
||||
}
|
||||
}
|
||||
// </AS:Chanayane>
|
||||
|
||||
mCurrentBoldItem = nullptr;
|
||||
}
|
||||
|
|
@ -898,23 +887,17 @@ void FloaterAO::onAnimationChanged(const LLUUID& animation)
|
|||
return;
|
||||
}
|
||||
|
||||
// <AS:Chanayane> Fix potential nullptr
|
||||
if (!mAnimationList)
|
||||
{
|
||||
LL_WARNS("AO") << "Animation list control is null." << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
// </AS:Chanayane>
|
||||
|
||||
// <AS:Chanayane> Safer casts
|
||||
// why do we have no LLScrollListCtrl::getItemByUserdata() ? -Zi
|
||||
for (LLScrollListItem* item : mAnimationList->getAllData())
|
||||
{
|
||||
LLUUID* id = static_cast<LLUUID*>(item->getUserdata());
|
||||
// <AS:Chanayane> compares the LLUUID values instead of pointer values
|
||||
//if (id == &animation)
|
||||
if (id && *id == animation)
|
||||
// </AS:Chanayane>
|
||||
{
|
||||
mCurrentBoldItem = item;
|
||||
|
||||
|
|
@ -937,7 +920,6 @@ void FloaterAO::onAnimationChanged(const LLUUID& animation)
|
|||
return;
|
||||
}
|
||||
}
|
||||
// </AS:Chanayane>
|
||||
}
|
||||
|
||||
// virtual
|
||||
|
|
|
|||
|
|
@ -48,12 +48,12 @@ class FloaterAO
|
|||
|
||||
private:
|
||||
FloaterAO(const LLSD& key);
|
||||
~FloaterAO();
|
||||
~FloaterAO() = default;
|
||||
|
||||
public:
|
||||
/*virtual*/ bool postBuild();
|
||||
virtual void onOpen(const LLSD& key);
|
||||
virtual void onClose(bool app_quitting);
|
||||
bool postBuild() override;
|
||||
void onOpen(const LLSD& key) override;
|
||||
void onClose(bool app_quitting) override;
|
||||
void updateList();
|
||||
void updateScrollListData();
|
||||
void updateSetParameters();
|
||||
|
|
@ -90,10 +90,7 @@ class FloaterAO
|
|||
|
||||
void onClickMore();
|
||||
void onClickLess();
|
||||
|
||||
// <AS:Chanayane> Double click on animation in AO
|
||||
void onDoubleClick();
|
||||
// </AS:Chanayane>
|
||||
|
||||
void onAnimationChanged(const LLUUID& animation);
|
||||
|
||||
|
|
@ -108,7 +105,7 @@ class FloaterAO
|
|||
bool newSetCallback(const LLSD& notification, const LLSD& response);
|
||||
bool removeSetCallback(const LLSD& notification, const LLSD& response);
|
||||
|
||||
virtual bool tick();
|
||||
bool tick() override;
|
||||
|
||||
std::vector<AOSet*> mSetList;
|
||||
AOSet* mSelectedSet;
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@ void AOEngine::onPauseAO()
|
|||
}
|
||||
}
|
||||
|
||||
void AOEngine::clear(bool from_timer)
|
||||
void AOEngine::clear(bool fromTimer)
|
||||
{
|
||||
std::move(mSets.begin(), mSets.end(), std::back_inserter(mOldSets));
|
||||
mSets.clear();
|
||||
|
|
@ -160,7 +160,7 @@ void AOEngine::clear(bool from_timer)
|
|||
|
||||
//<ND/> FIRE-3801; We cannot delete any AOSet object if we're called from a timer tick. AOSet is derived from LLEventTimer and destruction will
|
||||
// fail in ~LLInstanceTracker when a destructor runs during iteration.
|
||||
if (!from_timer)
|
||||
if (!fromTimer)
|
||||
{
|
||||
std::for_each(mOldSets.begin(), mOldSets.end(), DeletePointer());
|
||||
mOldSets.clear();
|
||||
|
|
@ -222,7 +222,7 @@ void AOEngine::setLastOverriddenMotion(const LLUUID& motion)
|
|||
}
|
||||
}
|
||||
|
||||
bool AOEngine::foreignAnimations()
|
||||
bool AOEngine::foreignAnimations() const
|
||||
{
|
||||
// checking foreign animations only makes sense when smart sit is enabled
|
||||
if (!mCurrentSet->getSmart())
|
||||
|
|
@ -520,7 +520,7 @@ void AOEngine::setStateCycleTimer(const AOSet::AOState* state)
|
|||
}
|
||||
}
|
||||
|
||||
const LLUUID AOEngine::override(const LLUUID& motion, bool start)
|
||||
LLUUID AOEngine::override(const LLUUID& motion, bool start)
|
||||
{
|
||||
LL_DEBUGS("AOEngine") << "override(" << gAnimLibrary.animationName(motion) << "," << start << ")" << LL_ENDL;
|
||||
|
||||
|
|
@ -861,7 +861,7 @@ void AOEngine::cycleTimeout(const AOSet* set)
|
|||
cycle(CycleAny);
|
||||
}
|
||||
|
||||
void AOEngine::cycle(eCycleMode cycleMode)
|
||||
void AOEngine::cycle(eCycleMode cycleMode, bool resetTimer)
|
||||
{
|
||||
if (!mEnabled)
|
||||
{
|
||||
|
|
@ -980,9 +980,13 @@ void AOEngine::cycle(eCycleMode cycleMode)
|
|||
gAgent.sendAnimationRequest(oldAnimation, ANIM_REQUEST_STOP);
|
||||
gAgentAvatarp->LLCharacter::stopMotion(oldAnimation);
|
||||
}
|
||||
|
||||
if (resetTimer)
|
||||
{
|
||||
mCurrentSet->resetTimer();
|
||||
}
|
||||
}
|
||||
|
||||
// <AS:Chanayane> Double click on animation in AO
|
||||
void AOEngine::playAnimation(const LLUUID& animation)
|
||||
{
|
||||
if (!mEnabled)
|
||||
|
|
@ -1098,6 +1102,8 @@ void AOEngine::playAnimation(const LLUUID& animation)
|
|||
gAgent.sendAnimationRequest(oldAnimation, ANIM_REQUEST_STOP);
|
||||
gAgentAvatarp->LLCharacter::stopMotion(oldAnimation);
|
||||
}
|
||||
|
||||
mCurrentSet->resetTimer();
|
||||
}
|
||||
|
||||
const AOSet* AOEngine::getCurrentSet() const
|
||||
|
|
@ -1108,7 +1114,6 @@ const AOSet::AOState* AOEngine::getCurrentState() const
|
|||
{
|
||||
return mCurrentSet->getStateByRemapID(mLastMotion);
|
||||
}
|
||||
// </AS:Chanayane>
|
||||
|
||||
void AOEngine::updateSortOrder(AOSet::AOState* state)
|
||||
{
|
||||
|
|
@ -1746,7 +1751,7 @@ void AOEngine::update()
|
|||
}
|
||||
}
|
||||
|
||||
void AOEngine::reload(bool aFromTimer)
|
||||
void AOEngine::reload(bool fromTimer)
|
||||
{
|
||||
bool wasEnabled = mEnabled;
|
||||
|
||||
|
|
@ -1760,7 +1765,7 @@ void AOEngine::reload(bool aFromTimer)
|
|||
gAgent.stopCurrentAnimations();
|
||||
mLastOverriddenMotion = ANIM_AGENT_STAND;
|
||||
|
||||
clear(aFromTimer);
|
||||
clear(fromTimer);
|
||||
mAOFolder.setNull();
|
||||
mTimerCollection.enableInventoryTimer(true);
|
||||
tick();
|
||||
|
|
@ -1771,7 +1776,7 @@ void AOEngine::reload(bool aFromTimer)
|
|||
}
|
||||
}
|
||||
|
||||
AOSet* AOEngine::getSetByName(const std::string& name) const
|
||||
AOSet* AOEngine::getSetByName(std::string_view name) const
|
||||
{
|
||||
for (auto set : mSets)
|
||||
{
|
||||
|
|
@ -1819,7 +1824,7 @@ void AOEngine::selectSet(AOSet* set)
|
|||
}
|
||||
}
|
||||
|
||||
AOSet* AOEngine::selectSetByName(const std::string& name)
|
||||
AOSet* AOEngine::selectSetByName(std::string_view name)
|
||||
{
|
||||
if (AOSet* set = getSetByName(name))
|
||||
{
|
||||
|
|
@ -1880,9 +1885,9 @@ void AOEngine::saveSet(const AOSet* set)
|
|||
mUpdatedSignal();
|
||||
}
|
||||
|
||||
bool AOEngine::renameSet(AOSet* set, const std::string& name)
|
||||
bool AOEngine::renameSet(AOSet* set, std::string_view name)
|
||||
{
|
||||
if (name.empty() || name.find(":") != std::string::npos)
|
||||
if (name.empty() || name.find(":") != std::string_view::npos)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,202 +32,191 @@
|
|||
#include "llextendedstatus.h"
|
||||
#include "llsingleton.h"
|
||||
#include "llviewerinventory.h"
|
||||
#include <boost/signals2.hpp>
|
||||
|
||||
class AOTimerCollection
|
||||
: public LLEventTimer
|
||||
class AOTimerCollection : public LLEventTimer
|
||||
{
|
||||
public:
|
||||
AOTimerCollection();
|
||||
~AOTimerCollection() = default;
|
||||
public:
|
||||
AOTimerCollection();
|
||||
~AOTimerCollection() = default;
|
||||
|
||||
virtual bool tick();
|
||||
bool tick() override;
|
||||
|
||||
void enableInventoryTimer(bool enable);
|
||||
void enableSettingsTimer(bool enable);
|
||||
void enableReloadTimer(bool enable);
|
||||
void enableImportTimer(bool enable);
|
||||
void enableInventoryTimer(bool enable);
|
||||
void enableSettingsTimer(bool enable);
|
||||
void enableReloadTimer(bool enable);
|
||||
void enableImportTimer(bool enable);
|
||||
|
||||
protected:
|
||||
void updateTimers();
|
||||
protected:
|
||||
void updateTimers();
|
||||
|
||||
bool mInventoryTimer;
|
||||
bool mSettingsTimer;
|
||||
bool mReloadTimer;
|
||||
bool mImportTimer;
|
||||
bool mInventoryTimer;
|
||||
bool mSettingsTimer;
|
||||
bool mReloadTimer;
|
||||
bool mImportTimer;
|
||||
};
|
||||
|
||||
// ----------------------------------------------------
|
||||
|
||||
class AOSitCancelTimer
|
||||
: public LLEventTimer
|
||||
class AOSitCancelTimer : public LLEventTimer
|
||||
{
|
||||
public:
|
||||
AOSitCancelTimer();
|
||||
~AOSitCancelTimer() = default;
|
||||
public:
|
||||
AOSitCancelTimer();
|
||||
~AOSitCancelTimer() = default;
|
||||
|
||||
void oneShot();
|
||||
void stop();
|
||||
void oneShot();
|
||||
void stop();
|
||||
|
||||
virtual bool tick();
|
||||
bool tick() override;
|
||||
|
||||
protected:
|
||||
S32 mTickCount;
|
||||
protected:
|
||||
S32 mTickCount;
|
||||
};
|
||||
|
||||
// ----------------------------------------------------
|
||||
|
||||
class AOState;
|
||||
class LLInventoryItem;
|
||||
class LLVFS;
|
||||
|
||||
class AOEngine
|
||||
: public LLSingleton<AOEngine>
|
||||
class AOEngine : public LLSingleton<AOEngine>
|
||||
{
|
||||
LLSINGLETON(AOEngine);
|
||||
~AOEngine();
|
||||
|
||||
public:
|
||||
enum eCycleMode
|
||||
{
|
||||
CycleAny,
|
||||
CycleNext,
|
||||
CyclePrevious
|
||||
};
|
||||
public:
|
||||
enum eCycleMode
|
||||
{
|
||||
CycleAny,
|
||||
CycleNext,
|
||||
CyclePrevious
|
||||
};
|
||||
|
||||
void enable(bool enable);
|
||||
void enableStands(bool enable_stands);
|
||||
const LLUUID override(const LLUUID& motion, bool start);
|
||||
void tick();
|
||||
void update();
|
||||
void reload(bool);
|
||||
void reloadStateAnimations(AOSet* set, AOSet::AOState* state);
|
||||
void clear(bool from_timer);
|
||||
void enable(bool enable);
|
||||
void enableStands(bool enable_stands);
|
||||
LLUUID override(const LLUUID& motion, bool start);
|
||||
void tick();
|
||||
void update();
|
||||
void reload(bool fromTimer);
|
||||
void reloadStateAnimations(AOSet* set, AOSet::AOState* state);
|
||||
void clear(bool fromTimer);
|
||||
|
||||
const LLUUID& getAOFolder() const;
|
||||
const LLUUID& getAOFolder() const;
|
||||
|
||||
void addSet(const std::string& name, inventory_func_type callback, bool reload = true);
|
||||
bool removeSet(AOSet* set);
|
||||
void addSet(const std::string& name, inventory_func_type callback, bool reload = true);
|
||||
bool removeSet(AOSet* set);
|
||||
|
||||
void addAnimation(const AOSet* set, AOSet::AOState* state, const LLInventoryItem* item, bool reload = true);
|
||||
bool removeAnimation(const AOSet* set, AOSet::AOState* state, S32 index);
|
||||
void checkSitCancel();
|
||||
void checkBelowWater(bool check_underwater);
|
||||
void addAnimation(const AOSet* set, AOSet::AOState* state, const LLInventoryItem* item, bool reload = true);
|
||||
bool removeAnimation(const AOSet* set, AOSet::AOState* state, S32 index);
|
||||
void checkSitCancel();
|
||||
void checkBelowWater(bool check_underwater);
|
||||
|
||||
bool importNotecard(const LLInventoryItem* item);
|
||||
void processImport(bool from_timer);
|
||||
bool importNotecard(const LLInventoryItem* item);
|
||||
void processImport(bool from_timer);
|
||||
|
||||
bool swapWithPrevious(AOSet::AOState* state, S32 index);
|
||||
bool swapWithNext(AOSet::AOState* state, S32 index);
|
||||
bool swapWithPrevious(AOSet::AOState* state, S32 index);
|
||||
bool swapWithNext(AOSet::AOState* state, S32 index);
|
||||
|
||||
void cycleTimeout(const AOSet* set);
|
||||
void cycle(eCycleMode cycleMode);
|
||||
void cycleTimeout(const AOSet* set);
|
||||
void cycle(eCycleMode cycleMode, bool resetTimer = false);
|
||||
|
||||
// <AS:Chanayane> Double click on animation in AO
|
||||
void playAnimation(const LLUUID& animation);
|
||||
const AOSet* getCurrentSet() const;
|
||||
const AOSet::AOState* getCurrentState() const;
|
||||
// </AS:Chanayane>
|
||||
void playAnimation(const LLUUID& animation);
|
||||
const AOSet* getCurrentSet() const;
|
||||
const AOSet::AOState* getCurrentState() const;
|
||||
|
||||
void inMouselook(bool mouselook);
|
||||
void selectSet(AOSet* set);
|
||||
AOSet* selectSetByName(const std::string& name);
|
||||
AOSet* getSetByName(const std::string& name) const;
|
||||
void inMouselook(bool mouselook);
|
||||
void selectSet(AOSet* set);
|
||||
AOSet* selectSetByName(std::string_view name);
|
||||
AOSet* getSetByName(std::string_view name) const;
|
||||
|
||||
// callback from LLAppViewer
|
||||
static void onLoginComplete();
|
||||
// callback from LLAppViewer
|
||||
static void onLoginComplete();
|
||||
|
||||
const std::vector<AOSet*> getSetList() const;
|
||||
const std::string getCurrentSetName() const;
|
||||
const AOSet* getDefaultSet() const;
|
||||
bool renameSet(AOSet* set, const std::string& name);
|
||||
const std::vector<AOSet*> getSetList() const;
|
||||
const std::string getCurrentSetName() const;
|
||||
const AOSet* getDefaultSet() const;
|
||||
bool renameSet(AOSet* set, std::string_view name);
|
||||
|
||||
void setDefaultSet(AOSet* set);
|
||||
void setOverrideSits(AOSet* set, bool override_sit);
|
||||
void setSmart(AOSet* set, bool smart);
|
||||
void setDisableMouselookStands(AOSet* set, bool disabled);
|
||||
void setCycle(AOSet::AOState* set, bool cycle);
|
||||
void setRandomize(AOSet::AOState* state, bool randomize);
|
||||
void setCycleTime(AOSet::AOState* state, F32 time);
|
||||
void setDefaultSet(AOSet* set);
|
||||
void setOverrideSits(AOSet* set, bool override_sit);
|
||||
void setSmart(AOSet* set, bool smart);
|
||||
void setDisableMouselookStands(AOSet* set, bool disabled);
|
||||
void setCycle(AOSet::AOState* set, bool cycle);
|
||||
void setRandomize(AOSet::AOState* state, bool randomize);
|
||||
void setCycleTime(AOSet::AOState* state, F32 time);
|
||||
|
||||
void saveSettings();
|
||||
void saveSettings();
|
||||
|
||||
typedef boost::signals2::signal<void ()> updated_signal_t;
|
||||
boost::signals2::connection setReloadCallback(const updated_signal_t::slot_type& cb)
|
||||
{
|
||||
return mUpdatedSignal.connect(cb);
|
||||
};
|
||||
typedef boost::signals2::signal<void()> updated_signal_t;
|
||||
boost::signals2::connection setReloadCallback(const updated_signal_t::slot_type& cb)
|
||||
{
|
||||
return mUpdatedSignal.connect(cb);
|
||||
};
|
||||
|
||||
typedef boost::signals2::signal<void (const LLUUID&)> animation_changed_signal_t;
|
||||
boost::signals2::connection setAnimationChangedCallback(const animation_changed_signal_t::slot_type& cb)
|
||||
{
|
||||
return mAnimationChangedSignal.connect(cb);
|
||||
};
|
||||
typedef boost::signals2::signal<void(const LLUUID&)> animation_changed_signal_t;
|
||||
boost::signals2::connection setAnimationChangedCallback(const animation_changed_signal_t::slot_type& cb)
|
||||
{
|
||||
return mAnimationChangedSignal.connect(cb);
|
||||
};
|
||||
|
||||
protected:
|
||||
void init();
|
||||
protected:
|
||||
void init();
|
||||
|
||||
void setLastMotion(const LLUUID& motion);
|
||||
void setLastOverriddenMotion(const LLUUID& motion);
|
||||
void setStateCycleTimer(const AOSet::AOState* state);
|
||||
void setLastMotion(const LLUUID& motion);
|
||||
void setLastOverriddenMotion(const LLUUID& motion);
|
||||
void setStateCycleTimer(const AOSet::AOState* state);
|
||||
|
||||
void stopAllStandVariants();
|
||||
void stopAllSitVariants();
|
||||
void stopAllStandVariants();
|
||||
void stopAllSitVariants();
|
||||
|
||||
bool foreignAnimations();
|
||||
AOSet::AOState* mapSwimming(const LLUUID& motion) const;
|
||||
AOSet::AOState* getStateForMotion(const LLUUID& motion) const;
|
||||
bool foreignAnimations() const;
|
||||
AOSet::AOState* mapSwimming(const LLUUID& motion) const;
|
||||
AOSet::AOState* getStateForMotion(const LLUUID& motion) const;
|
||||
|
||||
void updateSortOrder(AOSet::AOState* state);
|
||||
void saveSet(const AOSet* set);
|
||||
void saveState(const AOSet::AOState* state);
|
||||
void updateSortOrder(AOSet::AOState* state);
|
||||
void saveSet(const AOSet* set);
|
||||
void saveState(const AOSet::AOState* state);
|
||||
|
||||
bool createAnimationLink(AOSet::AOState* state, const LLInventoryItem* item);
|
||||
bool findForeignItems(const LLUUID& uuid) const;
|
||||
void purgeFolder(const LLUUID& uuid) const;
|
||||
bool createAnimationLink(AOSet::AOState* state, const LLInventoryItem* item);
|
||||
bool findForeignItems(const LLUUID& uuid) const;
|
||||
void purgeFolder(const LLUUID& uuid) const;
|
||||
|
||||
void onRegionChange();
|
||||
void onRegionChange();
|
||||
|
||||
void onToggleAOControl();
|
||||
void onToggleAOStandsControl();
|
||||
void onPauseAO();
|
||||
void onToggleAOControl();
|
||||
void onToggleAOStandsControl();
|
||||
void onPauseAO();
|
||||
|
||||
static void onNotecardLoadComplete(const LLUUID& assetUUID, LLAssetType::EType type,
|
||||
void* userdata, S32 status, LLExtStat extStatus);
|
||||
void parseNotecard(const char* buffer);
|
||||
static void onNotecardLoadComplete(const LLUUID& assetUUID, LLAssetType::EType type, void* userdata, S32 status, LLExtStat extStatus);
|
||||
void parseNotecard(const char* buffer);
|
||||
|
||||
void updatePersistedStateAnimations();
|
||||
void updatePersistedStateAnimations();
|
||||
|
||||
updated_signal_t mUpdatedSignal;
|
||||
animation_changed_signal_t mAnimationChangedSignal;
|
||||
updated_signal_t mUpdatedSignal;
|
||||
animation_changed_signal_t mAnimationChangedSignal;
|
||||
|
||||
AOTimerCollection mTimerCollection;
|
||||
AOSitCancelTimer mSitCancelTimer;
|
||||
AOTimerCollection mTimerCollection;
|
||||
AOSitCancelTimer mSitCancelTimer;
|
||||
|
||||
bool mEnabled;
|
||||
bool mEnabledStands;
|
||||
bool mInMouselook;
|
||||
bool mUnderWater;
|
||||
bool mEnabled;
|
||||
bool mEnabledStands;
|
||||
bool mInMouselook;
|
||||
bool mUnderWater;
|
||||
|
||||
LLUUID mAOFolder;
|
||||
LLUUID mLastMotion;
|
||||
LLUUID mLastOverriddenMotion;
|
||||
LLUUID mTransitionId;
|
||||
LLUUID mAOFolder;
|
||||
LLUUID mLastMotion;
|
||||
LLUUID mLastOverriddenMotion;
|
||||
LLUUID mTransitionId;
|
||||
|
||||
// this motion will be ignored once in the overrider when stopping, fixes a case
|
||||
// where the AO doesn't correctly start up on login or when getting enabled manually
|
||||
LLUUID mIgnoreMotionStopOnce;
|
||||
// this motion will be ignored once in the overrider when stopping, fixes a case
|
||||
// where the AO doesn't correctly start up on login or when getting enabled manually
|
||||
LLUUID mIgnoreMotionStopOnce;
|
||||
|
||||
std::vector<AOSet*> mSets;
|
||||
std::vector<AOSet*> mOldSets;
|
||||
AOSet* mCurrentSet;
|
||||
AOSet* mDefaultSet;
|
||||
std::vector<AOSet*> mSets;
|
||||
std::vector<AOSet*> mOldSets;
|
||||
AOSet* mCurrentSet;
|
||||
AOSet* mDefaultSet;
|
||||
|
||||
AOSet* mImportSet;
|
||||
std::vector<AOSet*> mOldImportSets;
|
||||
S32 mImportRetryCount;
|
||||
AOSet* mImportSet;
|
||||
std::vector<AOSet*> mOldImportSets;
|
||||
S32 mImportRetryCount;
|
||||
|
||||
boost::signals2::connection mRegionChangeConnection;
|
||||
boost::signals2::connection mRegionChangeConnection;
|
||||
};
|
||||
|
||||
#endif // AOENGINE_H
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
#include "llanimationstates.h"
|
||||
#include "llinventorymodel.h"
|
||||
|
||||
AOSet::AOSet(const LLUUID inventoryID)
|
||||
AOSet::AOSet(const LLUUID& inventoryID)
|
||||
: LLEventTimer(10000.0f),
|
||||
mInventoryID(inventoryID),
|
||||
mName("** New AO Set **"),
|
||||
|
|
@ -232,6 +232,12 @@ void AOSet::stopTimer()
|
|||
mEventTimer.stop();
|
||||
}
|
||||
|
||||
void AOSet::resetTimer()
|
||||
{
|
||||
LL_DEBUGS("AOEngine") << "Resetting timer for " << getName() << "." << LL_ENDL;
|
||||
mEventTimer.reset();
|
||||
}
|
||||
|
||||
bool AOSet::tick()
|
||||
{
|
||||
AOEngine::instance().cycleTimeout(this);
|
||||
|
|
@ -253,7 +259,7 @@ const std::string& AOSet::getName() const
|
|||
return mName;
|
||||
}
|
||||
|
||||
void AOSet::setName(const std::string& name)
|
||||
void AOSet::setName(std::string_view name)
|
||||
{
|
||||
mName = name;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,117 +29,117 @@
|
|||
|
||||
class LLInventoryItem;
|
||||
|
||||
class AOSet
|
||||
: public LLEventTimer
|
||||
class AOSet : public LLEventTimer
|
||||
{
|
||||
public:
|
||||
AOSet(const LLUUID inventoryID);
|
||||
~AOSet();
|
||||
public:
|
||||
AOSet(const LLUUID& inventoryID);
|
||||
~AOSet();
|
||||
|
||||
// keep number and order in sync with list of names in the constructor
|
||||
enum
|
||||
{
|
||||
Start = 0, // convenience, so we don't have to know the name of the first state
|
||||
Standing = 0,
|
||||
Walking,
|
||||
Running,
|
||||
Sitting,
|
||||
SittingOnGround,
|
||||
Crouching,
|
||||
CrouchWalking,
|
||||
Landing,
|
||||
SoftLanding,
|
||||
StandingUp,
|
||||
Falling,
|
||||
FlyingDown,
|
||||
FlyingUp,
|
||||
Flying,
|
||||
FlyingSlow,
|
||||
Hovering,
|
||||
Jumping,
|
||||
PreJumping,
|
||||
TurningRight,
|
||||
TurningLeft,
|
||||
Typing,
|
||||
Floating,
|
||||
SwimmingForward,
|
||||
SwimmingUp,
|
||||
SwimmingDown,
|
||||
AOSTATES_MAX
|
||||
};
|
||||
|
||||
struct AOAnimation
|
||||
{
|
||||
std::string mName;
|
||||
LLUUID mAssetUUID;
|
||||
LLUUID mInventoryUUID;
|
||||
LLUUID mOriginalUUID;
|
||||
S32 mSortOrder;
|
||||
};
|
||||
|
||||
struct AOState
|
||||
{
|
||||
std::string mName;
|
||||
std::vector<std::string> mAlternateNames;
|
||||
std::vector<const LLInventoryItem*> mAddQueue;
|
||||
LLUUID mRemapID;
|
||||
bool mCycle;
|
||||
bool mRandom;
|
||||
F32 mCycleTime;
|
||||
std::vector<AOAnimation> mAnimations;
|
||||
U32 mCurrentAnimation;
|
||||
LLUUID mCurrentAnimationID;
|
||||
LLUUID mInventoryUUID;
|
||||
bool mDirty;
|
||||
};
|
||||
|
||||
const LLUUID& getInventoryUUID() const;
|
||||
void setInventoryUUID(const LLUUID& inventoryID);
|
||||
|
||||
const std::string& getName() const;
|
||||
void setName(const std::string& name);
|
||||
|
||||
bool getSitOverride() const;
|
||||
void setSitOverride(bool override_sit);
|
||||
|
||||
bool getSmart() const;
|
||||
void setSmart(bool smart);
|
||||
|
||||
bool getMouselookStandDisable() const;
|
||||
void setMouselookStandDisable(bool disable);
|
||||
|
||||
bool getComplete() const;
|
||||
void setComplete(bool complete);
|
||||
|
||||
const LLUUID& getMotion() const;
|
||||
void setMotion(const LLUUID& motion);
|
||||
|
||||
bool getDirty() const;
|
||||
void setDirty(bool dirty);
|
||||
|
||||
AOState* getState(S32 eName);
|
||||
AOState* getStateByName(const std::string& name);
|
||||
AOState* getStateByRemapID(const LLUUID& id);
|
||||
const LLUUID& getAnimationForState(AOState* state) const;
|
||||
|
||||
void startTimer(F32 timeout);
|
||||
void stopTimer();
|
||||
bool tick() override;
|
||||
|
||||
std::vector<std::string> mStateNames;
|
||||
|
||||
protected:
|
||||
LLUUID mInventoryID;
|
||||
// keep number and order in sync with list of names in the constructor
|
||||
enum
|
||||
{
|
||||
Start = 0, // convenience, so we don't have to know the name of the first state
|
||||
Standing = 0,
|
||||
Walking,
|
||||
Running,
|
||||
Sitting,
|
||||
SittingOnGround,
|
||||
Crouching,
|
||||
CrouchWalking,
|
||||
Landing,
|
||||
SoftLanding,
|
||||
StandingUp,
|
||||
Falling,
|
||||
FlyingDown,
|
||||
FlyingUp,
|
||||
Flying,
|
||||
FlyingSlow,
|
||||
Hovering,
|
||||
Jumping,
|
||||
PreJumping,
|
||||
TurningRight,
|
||||
TurningLeft,
|
||||
Typing,
|
||||
Floating,
|
||||
SwimmingForward,
|
||||
SwimmingUp,
|
||||
SwimmingDown,
|
||||
AOSTATES_MAX
|
||||
};
|
||||
|
||||
struct AOAnimation
|
||||
{
|
||||
std::string mName;
|
||||
bool mSitOverride;
|
||||
bool mSmart;
|
||||
bool mMouselookStandDisable;
|
||||
bool mComplete;
|
||||
LLUUID mCurrentMotion;
|
||||
bool mDirty;
|
||||
LLUUID mAssetUUID;
|
||||
LLUUID mInventoryUUID;
|
||||
LLUUID mOriginalUUID;
|
||||
S32 mSortOrder;
|
||||
};
|
||||
|
||||
AOState mStates[AOSTATES_MAX];
|
||||
struct AOState
|
||||
{
|
||||
std::string mName;
|
||||
std::vector<std::string> mAlternateNames;
|
||||
std::vector<const LLInventoryItem*> mAddQueue;
|
||||
LLUUID mRemapID;
|
||||
bool mCycle;
|
||||
bool mRandom;
|
||||
F32 mCycleTime;
|
||||
std::vector<AOAnimation> mAnimations;
|
||||
U32 mCurrentAnimation;
|
||||
LLUUID mCurrentAnimationID;
|
||||
LLUUID mInventoryUUID;
|
||||
bool mDirty;
|
||||
};
|
||||
|
||||
const LLUUID& getInventoryUUID() const;
|
||||
void setInventoryUUID(const LLUUID& inventoryID);
|
||||
|
||||
const std::string& getName() const;
|
||||
void setName(std::string_view name);
|
||||
|
||||
bool getSitOverride() const;
|
||||
void setSitOverride(bool override_sit);
|
||||
|
||||
bool getSmart() const;
|
||||
void setSmart(bool smart);
|
||||
|
||||
bool getMouselookStandDisable() const;
|
||||
void setMouselookStandDisable(bool disable);
|
||||
|
||||
bool getComplete() const;
|
||||
void setComplete(bool complete);
|
||||
|
||||
const LLUUID& getMotion() const;
|
||||
void setMotion(const LLUUID& motion);
|
||||
|
||||
bool getDirty() const;
|
||||
void setDirty(bool dirty);
|
||||
|
||||
AOState* getState(S32 eName);
|
||||
AOState* getStateByName(const std::string& name);
|
||||
AOState* getStateByRemapID(const LLUUID& id);
|
||||
const LLUUID& getAnimationForState(AOState* state) const;
|
||||
|
||||
void startTimer(F32 timeout);
|
||||
void stopTimer();
|
||||
void resetTimer();
|
||||
bool tick() override;
|
||||
|
||||
std::vector<std::string> mStateNames;
|
||||
|
||||
protected:
|
||||
LLUUID mInventoryID;
|
||||
|
||||
std::string mName;
|
||||
bool mSitOverride;
|
||||
bool mSmart;
|
||||
bool mMouselookStandDisable;
|
||||
bool mComplete;
|
||||
LLUUID mCurrentMotion;
|
||||
bool mDirty;
|
||||
|
||||
AOState mStates[AOSTATES_MAX];
|
||||
};
|
||||
|
||||
#endif // AOSET_H
|
||||
|
|
|
|||
Loading…
Reference in New Issue