diff --git a/indra/newview/ao.cpp b/indra/newview/ao.cpp index aca76cf0dd..0d09f03c91 100644 --- a/indra/newview/ao.cpp +++ b/indra/newview/ao.cpp @@ -142,6 +142,10 @@ BOOL FloaterAO::postBuild() mCycleTimeTextLabel=aoPanel->getChild("ao_cycle_time_seconds_label"); mCycleTimeSpinner=aoPanel->getChild("ao_cycle_time"); + mPreviousButton=aoPanel->getChild("ao_previous"); + mNextButton=aoPanel->getChild("ao_next"); + mReloadButton=aoPanel->getChild("ao_reload"); + mSetSelector->setCommitCallback(boost::bind(&FloaterAO::onSelectSet,this)); mActivateSetButton->setCommitCallback(boost::bind(&FloaterAO::onClickActivate,this)); mAddButton->setCommitCallback(boost::bind(&FloaterAO::onClickAdd,this)); @@ -151,6 +155,9 @@ BOOL FloaterAO::postBuild() mSmartCheckBox->setCommitCallback(boost::bind(&FloaterAO::onCheckSmart,this)); mDisableMouselookCheckBox->setCommitCallback(boost::bind(&FloaterAO::onCheckDisableStands,this)); + mPreviousButton->setCommitCallback(boost::bind(&FloaterAO::onClickPrevious,this)); + mNextButton->setCommitCallback(boost::bind(&FloaterAO::onClickNext,this)); + mAnimationList->setCommitOnSelectionChange(TRUE); mStateSelector->setCommitCallback(boost::bind(&FloaterAO::onSelectState,this)); @@ -163,9 +170,7 @@ BOOL FloaterAO::postBuild() updateSmart(); - aoPanel->getChild("ao_reload")->setCommitCallback(boost::bind(&FloaterAO::onClickReload,this)); - aoPanel->getChild("ao_previous")->setCommitCallback(boost::bind(&FloaterAO::onClickPrevious,this)); - aoPanel->getChild("ao_next")->setCommitCallback(boost::bind(&FloaterAO::onClickNext,this)); + mReloadButton->setCommitCallback(boost::bind(&FloaterAO::onClickReload,this)); AOEngine::instance().setReloadCallback(boost::bind(&FloaterAO::updateList,this)); @@ -191,6 +196,8 @@ void FloaterAO::enableStateControls(BOOL yes) mRandomizeCheckBox->setEnabled(yes); mCycleTimeTextLabel->setEnabled(yes); mCycleTimeSpinner->setEnabled(yes); + mPreviousButton->setEnabled(yes); + mNextButton->setEnabled(yes); mCanDragAndDrop=yes; } diff --git a/indra/newview/ao.h b/indra/newview/ao.h index a4965e448a..182b1b16a0 100644 --- a/indra/newview/ao.h +++ b/indra/newview/ao.h @@ -110,6 +110,11 @@ class FloaterAO LLTextBox* mCycleTimeTextLabel; LLSpinCtrl* mCycleTimeSpinner; + LLButton* mReloadButton; + + LLButton* mPreviousButton; + LLButton* mNextButton; + BOOL mCanDragAndDrop; }; diff --git a/indra/newview/aoengine.cpp b/indra/newview/aoengine.cpp index 36bd8bc848..fa9908af52 100644 --- a/indra/newview/aoengine.cpp +++ b/indra/newview/aoengine.cpp @@ -387,6 +387,12 @@ void AOEngine::cycleTimeout(const AOSet* set) void AOEngine::cycle(eCycleMode cycleMode) { + if(!mCurrentSet) + { + lldebugs << "cycle without set." << llendl; + return; + } + LLUUID motion=mCurrentSet->getMotion(); // assume stand if no motion is registered, happens after login when the avatar hasn't moved at all yet @@ -406,6 +412,12 @@ void AOEngine::cycle(eCycleMode cycleMode) return; } + if(!state->mAnimations.size()) + { + lldebugs << "cycle without animations in state." << llendl; + return; + } + LLUUID animation=state->mCurrentAnimationID; if(!animation.isNull()) gAgent.sendAnimationRequest(animation,ANIM_REQUEST_STOP);