Imprudence AO

This commit is contained in:
Siana Gearz
2011-02-27 17:29:51 +01:00
parent f7109a0131
commit 8d85f67757
19 changed files with 2252 additions and 50 deletions

View File

@@ -64,6 +64,8 @@ include_directories(
)
set(viewer_SOURCE_FILES
aoremotectrl.cpp
floaterao.cpp
floatervoicelicense.cpp
cofmgr.cpp
ascentdaycyclemanager.cpp
@@ -531,6 +533,8 @@ set(viewer_HEADER_FILES
CMakeLists.txt
ViewerInstall.cmake
aoremotectrl.h
floaterao.h
floatervoicelicense.h
cofmgr.h
ascentdaycyclemanager.h

View File

@@ -8,6 +8,127 @@
<string>settings_sh.xml</string>
<string>settings_rlv.xml</string>
</array>
<!-- Begin: AO-->
<key>ShowAOSitPopup</key>
<map>
<key>Comment</key>
<string>Show AO sit popup</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>EnableAORemote</key>
<map>
<key>Comment</key>
<string>Enable AO quick access remote in toolbar</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>DisableInternalFlyUpAnimation</key>
<map>
<key>Comment</key>
<string>Disables the internal hover up animation (on your local computer only). Enable if you use an AO and wear hand attachments like rings, prim nails etc. that often loose their correct position while flying.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>AOEnabled</key>
<map>
<key>Comment</key>
<string>Turn on Animation Overrider</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>AOAdvanced</key>
<map>
<key>Comment</key>
<string>Advanced options</string>
<key>Persist</key>
<integer>0</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>AOSitsEnabled</key>
<map>
<key>Comment</key>
<string>Overrides sit animations.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>AONoStandsInMouselook</key>
<map>
<key>Comment</key>
<string>Disables stand anims during mouselook</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>AOStandInterval</key>
<map>
<key>Comment</key>
<string>AO stand time in seconds</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>20</real>
</map>
<key>AOStandRandomize</key>
<map>
<key>Comment</key>
<string>Randomize stand anims</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>AORect</key>
<map>
<key>Comment</key>
<string>Rectangle for AO window</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Rect</string>
<key>Value</key>
<array>
<integer>0</integer>
<integer>100</integer>
<integer>100</integer>
<integer>100</integer>
</array>
</map>
<key>ClientDefinitionsURL</key>
<map>
@@ -206,28 +327,6 @@
<key>Value</key>
<integer>3</integer>
</map>
<key>AO.Enabled</key>
<map>
<key>Comment</key>
<string>Enable animation overrider</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>AO.Period</key>
<map>
<key>Comment</key>
<string>Period when changing stands in seconds</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<integer>20.0</integer>
</map>
<key>Blacklist.Settings</key>
<map>
<key>Comment</key>
@@ -13147,6 +13246,17 @@
<key>Value</key>
<integer>1</integer>
</map>
<key>WarnFirstAO</key>
<map>
<key>Comment</key>
<string>Enables FirstAO warning dialog</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>WarnFirstAppearance</key>
<map>
<key>Comment</key>

View File

@@ -8,6 +8,197 @@
</array-->
<!-- Begin AO -->
<key>AOConfigNotecardID</key>
<map>
<key>Comment</key>
<string>InventoryItemID of the AO config notecard</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string></string>
</map>
<key>AODefaultWalk</key>
<map>
<key>Comment</key>
<string>Default walk anim</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string></string>
</map>
<key>AODefaultSit</key>
<map>
<key>Comment</key>
<string>Default sit anim</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string></string>
</map>
<key>AODefaultRun</key>
<map>
<key>Comment</key>
<string>Default run anim</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string></string>
</map>
<key>AODefaultJump</key>
<map>
<key>Comment</key>
<string>Default jump anim</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string></string>
</map>
<key>AODefaultGroundSit</key>
<map>
<key>Comment</key>
<string>Default groundsit anim</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string></string>
</map>
<key>AODefaultCrouch</key>
<map>
<key>Comment</key>
<string>Default crouch anim</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string></string>
</map>
<key>AODefaultCrouchWalk</key>
<map>
<key>Comment</key>
<string>Default crouchwalk anim</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string></string>
</map>
<key>AODefaultFall</key>
<map>
<key>Comment</key>
<string>Default fall anim</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string></string>
</map>
<key>AODefaultHover</key>
<map>
<key>Comment</key>
<string>Default hover anim</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string></string>
</map>
<key>AODefaultFly</key>
<map>
<key>Comment</key>
<string>Default fly anim</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string></string>
</map>
<key>AODefaultFlySlow</key>
<map>
<key>Comment</key>
<string>Default flyslow anim</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string></string>
</map>
<key>AODefaultFlyUp</key>
<map>
<key>Comment</key>
<string>Default flyup anim</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string></string>
</map>
<key>AODefaultFlyDown</key>
<map>
<key>Comment</key>
<string>Default flydown anim</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string></string>
</map>
<key>AODefaultLand</key>
<map>
<key>Comment</key>
<string>Default land anim</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string></string>
</map>
<key>AODefaultStandUp</key>
<map>
<key>Comment</key>
<string>Default standup anim</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string></string>
</map>
<key>AODefaultPreJump</key>
<map>
<key>Comment</key>
<string>Default prejump anim</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string></string>
</map>
<!-- End AO -->
<!-- Ascent Account-Specific (Always) -->

1432
indra/newview/floaterao.cpp Normal file

File diff suppressed because it is too large Load Diff

131
indra/newview/floaterao.h Normal file
View File

@@ -0,0 +1,131 @@
#ifndef LL_LLFLOATERAO_H
#define LL_LLFLOATERAO_H
#include "llfloater.h"
#include "llviewercontrol.h"
#include "llagent.h"
class AONoteCardDropTarget;
const int STATE_AGENT_IDLE = 0;
const int STATE_AGENT_WALK = 1;
const int STATE_AGENT_RUN = 2;
const int STATE_AGENT_STAND = 3;
const int STATE_AGENT_PRE_JUMP = 4;
const int STATE_AGENT_JUMP = 5;
const int STATE_AGENT_TURNLEFT = 6;
const int STATE_AGENT_TURNRIGHT = 7;
const int STATE_AGENT_SIT = 8;
const int STATE_AGENT_GROUNDSIT = 9;
const int STATE_AGENT_HOVER = 10;
const int STATE_AGENT_HOVER_DOWN = 11;
const int STATE_AGENT_HOVER_UP = 12;
const int STATE_AGENT_CROUCH = 13;
const int STATE_AGENT_CROUCHWALK = 14;
const int STATE_AGENT_FALLDOWN = 15;
const int STATE_AGENT_STANDUP = 16;
const int STATE_AGENT_LAND = 17;
const int STATE_AGENT_FLY = 18;
const int STATE_AGENT_FLYSLOW = 19;
class AOStandTimer : public LLEventTimer
{
public:
AOStandTimer();
~AOStandTimer();
virtual BOOL tick();
virtual void reset();
};
class AOInvTimer : public LLEventTimer
{
public:
AOInvTimer();
~AOInvTimer();
BOOL tick();
};
class LLFloaterAO : public LLFloater
{
public:
LLFloaterAO();
virtual BOOL postBuild();
virtual ~LLFloaterAO();
static void show(void*);
static void init();
static void onClickToggleAO(LLUICtrl *, void*);
static void onClickToggleSits(LLUICtrl *, void*);
static void run();
static void updateLayout(LLFloaterAO* floater);
static BOOL loadAnims();
static int getAnimationState();
static void setAnimationState(int state);
static void setStates(const LLUUID& id, BOOL start);
static LLUUID getCurrentStandId();
static void setCurrentStandId(const LLUUID& id);
static int stand_iterator;
static BOOL ChangeStand();
static BOOL startMotion(const LLUUID& id, F32 time_offset = 0.f, BOOL stand = FALSE);
static BOOL stopMotion(const LLUUID& id, BOOL stop_immediate, BOOL stand = FALSE);
static LLUUID GetAnimID(const LLUUID& id);
static int GetStateFromAnimID(const LLUUID& id);
static LLUUID GetAnimIDFromState(const int state);
static int GetStateFromToken(std::string strtoken);
static void onClickLess(void* data) ;
static void onClickMore(void* data) ;
static void onClickPrevStand(void* userdata);
static void onClickNextStand(void* userdata);
static void onClickReloadCard(void* userdata);
static void onClickOpenCard(void* userdata);
static void onClickNewCard(void* userdata);
static LLUUID invfolderid;
static const LLUUID& getAssetIDByName(const std::string& name);
static bool getInstance();
private:
static LLFloaterAO* sInstance;
static int mAnimationState;
static LLUUID mCurrentStandId;
static AONoteCardDropTarget* mAOItemDropTarget;
static void AOItemDrop(LLViewerInventoryItem* item);
static void onSpinnerCommit(LLUICtrl* ctrl, void* userdata);
static void onComboBoxCommit(LLUICtrl* ctrl, void* userdata);
static BOOL SetDefault(void *userdata, LLUUID ao_id, std::string defaultanim);
BOOL mDirty;
protected:
static void onNotecardLoadComplete(LLVFS *vfs,const LLUUID& asset_uuid,LLAssetType::EType type,void* user_data, S32 status, LLExtStat ext_status);
};
extern AOInvTimer* gAOInvTimer;
#endif

View File

@@ -67,6 +67,7 @@
#include "llface.h"
#include "llfirstuse.h"
#include "llfloater.h"
#include "floaterao.h"
#include "llfloateractivespeakers.h"
#include "llfloateravatarinfo.h"
#include "llfloaterbuildoptions.h"
@@ -4070,6 +4071,7 @@ void LLAgent::changeCameraToMouselook(BOOL animate)
if( mCameraMode != CAMERA_MODE_MOUSELOOK )
{
gFocusMgr.setKeyboardFocus( NULL );
if (gSavedSettings.getBOOL("AONoStandsInMouselook")) LLFloaterAO::stopMotion(LLFloaterAO::getCurrentStandId(), FALSE,TRUE);
mLastCameraMode = mCameraMode;
mCameraMode = CAMERA_MODE_MOUSELOOK;

View File

@@ -159,6 +159,7 @@
#include "llvosurfacepatch.h"
// includes for idle() idleShutdown()
#include "floaterao.h"
#include "llviewercontrol.h"
#include "lleventnotifier.h"
#include "llcallbacklist.h"
@@ -1752,6 +1753,7 @@ bool LLAppViewer::initConfiguration()
LLFirstUse::addConfigVariable("FirstTeleport");
LLFirstUse::addConfigVariable("FirstOverrideKeys");
LLFirstUse::addConfigVariable("FirstAttach");
LLFirstUse::addConfigVariable("FirstAO");
LLFirstUse::addConfigVariable("FirstAppearance");
LLFirstUse::addConfigVariable("FirstInventory");
LLFirstUse::addConfigVariable("FirstSandbox");

View File

@@ -203,6 +203,17 @@ void LLFirstUse::useAttach()
// nothing for now
}
// static
void LLFirstUse::useAO()
{
if (gSavedSettings.getWarning("FirstAO"))
{
gSavedSettings.setWarning("FirstAO", FALSE);
LLNotifications::instance().add("FirstAO");
}
}
// static
void LLFirstUse::useAppearance()
{

View File

@@ -103,6 +103,7 @@ public:
static void useTeleport();
static void useOverrideKeys();
static void useAttach();
static void useAO();
static void useAppearance();
static void useInventory();
static void useSandbox();

View File

@@ -37,6 +37,7 @@
#include "lloverlaybar.h"
#include "aoremotectrl.h"
#include "llaudioengine.h"
#include "importtracker.h"
#include "llrender.h"
@@ -116,6 +117,13 @@ void* LLOverlayBar::createAdvSettings(void* userdata)
return self->mAdvSettings;
}
void* LLOverlayBar::createAORemote(void* userdata)
{
LLOverlayBar *self = (LLOverlayBar*)userdata;
self->mAORemote = new AORemoteCtrl();
return self->mAORemote;
}
void* LLOverlayBar::createChatBar(void* userdata)
{
gChatBar = new LLChatBar();
@@ -126,6 +134,7 @@ LLOverlayBar::LLOverlayBar()
: LLPanel(),
mMediaRemote(NULL),
mVoiceRemote(NULL),
mAORemote(NULL),
mMusicState(STOPPED),
mOriginalIMLabel("")
{
@@ -138,6 +147,7 @@ LLOverlayBar::LLOverlayBar()
factory_map["media_remote"] = LLCallbackMap(LLOverlayBar::createMediaRemote, this);
factory_map["voice_remote"] = LLCallbackMap(LLOverlayBar::createVoiceRemote, this);
factory_map["Adv_Settings"] = LLCallbackMap(LLOverlayBar::createAdvSettings, this);
factory_map["ao_remote"] = LLCallbackMap(LLOverlayBar::createAORemote, this);
factory_map["chat_bar"] = LLCallbackMap(LLOverlayBar::createChatBar, this);
LLUICtrlFactory::getInstance()->buildPanel(this, "panel_overlaybar.xml", &factory_map);
@@ -157,6 +167,13 @@ bool updateChatVisible(const LLSD &data)
return true;
}
bool updateAORemote(const LLSD &data)
{
gOverlayBar->childSetVisible("ao_remote_container", gSavedSettings.getBOOL("EnableAORemote"));
return true;
}
BOOL LLOverlayBar::postBuild()
{
childSetAction("New IM",onClickIMReceived,this);
@@ -180,8 +197,10 @@ BOOL LLOverlayBar::postBuild()
gSavedSettings.getControl("wlfAdvSettingsPopup")->getSignal()->connect(&updateAdvSettingsPopup);
gSavedSettings.getControl("ChatVisible")->getSignal()->connect(&updateChatVisible);
gSavedSettings.getControl("EnableAORemote")->getSignal()->connect(&updateAORemote);
childSetVisible("AdvSettings_container", !sAdvSettingsPopup);
childSetVisible("AdvSettings_container_exp", sAdvSettingsPopup);
childSetVisible("ao_remote_container", gSavedSettings.getBOOL("EnableAORemote"));
return TRUE;
}
@@ -345,6 +364,7 @@ void LLOverlayBar::refresh()
buttons_changed = TRUE;
}
moveChildToBackOfTabGroup(mAORemote);
moveChildToBackOfTabGroup(mMediaRemote);
moveChildToBackOfTabGroup(mVoiceRemote);
@@ -362,6 +382,7 @@ void LLOverlayBar::refresh()
childSetVisible("voice_remote_container", FALSE);
childSetVisible("AdvSettings_container", FALSE);
childSetVisible("AdvSettings_container_exp", FALSE);
childSetVisible("ao_remote_container", FALSE);
childSetVisible("state_buttons", FALSE);
}
else
@@ -371,6 +392,7 @@ void LLOverlayBar::refresh()
childSetVisible("voice_remote_container", LLVoiceClient::voiceEnabled());
childSetVisible("AdvSettings_container", !sAdvSettingsPopup);//!gSavedSettings.getBOOL("wlfAdvSettingsPopup"));
childSetVisible("AdvSettings_container_exp", sAdvSettingsPopup);//gSavedSettings.getBOOL("wlfAdvSettingsPopup"));
childSetVisible("ao_remote_container", gSavedSettings.getBOOL("EnableAORemote"));
childSetVisible("state_buttons", TRUE);
}
}

View File

@@ -51,6 +51,7 @@ class LLStatGraph;
class LLSlider;
class LLVoiceRemoteCtrl;
class wlfPanel_AdvSettings;
class AORemoteCtrl;
class LLOverlayBar
: public LLPanel
@@ -94,6 +95,7 @@ protected:
static void* createMediaRemote(void* userdata);
static void* createVoiceRemote(void* userdata);
static void* createAdvSettings(void* userdata);
static void* createAORemote(void* userdata);
static void* createChatBar(void* userdata);
void enableMediaButtons();
@@ -103,6 +105,7 @@ protected:
LLVoiceRemoteCtrl* mVoiceRemote;
LLButton* mCancelBtn;
wlfPanel_AdvSettings* mAdvSettings;
AORemoteCtrl* mAORemote;
bool mBuilt; // dialog constructed yet?
enum { STOPPED=0, PLAYING=1, PAUSED=2 };
S32 mMusicState;

View File

@@ -767,4 +767,9 @@ LLUUID LLPreviewNotecard::getItemID()
}
// </edit>
LLTextEditor* LLPreviewNotecard::getEditor()
{
return getChild<LLViewerTextEditor>("Notecard Editor");
}
// EOF

View File

@@ -43,6 +43,7 @@
// This class allows us to edit notecards
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class LLTextEditor;
class LLViewerTextEditor;
class LLButton;
@@ -84,16 +85,18 @@ public:
// asset system. :(
void refreshFromInventory();
// <edit>
LLUUID getNotecardItemID();
LLUUID getObjectID();
virtual LLUUID getItemID();
// <edit>
LLUUID getNotecardItemID();
LLUUID getObjectID();
virtual LLUUID getItemID();
// </edit>
protected:
virtual void loadAsset();
LLTextEditor* getEditor();
bool saveIfNeeded(LLInventoryItem* copyitem = NULL);
protected:
virtual void loadAsset();
static LLPreviewNotecard* getInstance(const LLUUID& uuid);
static void onLoadComplete(LLVFS *vfs,
@@ -102,7 +105,7 @@ protected:
void* user_data, S32 status, LLExtStat ext_status);
static void onClickSave(void* data);
// <edit>
// <edit>
static void onClickGetItems(void* data);
static void onSaveComplete(const LLUUID& asset_uuid,
@@ -122,9 +125,9 @@ protected:
LLUUID mNotecardItemID;
LLUUID mObjectID;
// <edit>
virtual BOOL canSaveAs() const;
virtual void saveAs();
// <edit>
virtual BOOL canSaveAs() const;
virtual void saveAs();
// </edit>
};

View File

@@ -53,6 +53,7 @@
#include "hippogridmanager.h"
#include "hippolimits.h"
#include "floaterao.h"
#include "llares.h"
#include "llcachename.h"
@@ -2857,6 +2858,12 @@ bool idle_startup()
gFloaterWorldMap->observeFriends();
}
// Start the AO now that settings have loaded and login successful -- MC
if (!gAOInvTimer)
{
gAOInvTimer = new AOInvTimer();
}
gViewerWindow->showCursor();
gViewerWindow->getWindow()->resetBusyCount();
gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW);

View File

@@ -251,6 +251,7 @@
#include "scriptcounter.h"
#include "llfloaterdisplayname.h"
#include "llavatarnamecache.h"
#include "floaterao.h"
#include "hippogridmanager.h"
@@ -439,6 +440,7 @@ void handle_hide_typing_notification(void*);
void handle_close_all_notifications(void*);
void handle_reopen_with_hex_editor(void*);
void handle_open_message_log(void*);
void handle_edit_ao(void*);
void handle_local_assets(void*);
void handle_vfs_explorer(void*);
void handle_sounds_explorer(void*);
@@ -767,11 +769,8 @@ void init_menus()
menu->append(new LLMenuItemCallGL( "Force Ground Sit", &handle_force_ground_sit, NULL));
menu->append(new LLMenuItemCallGL( "Phantom Avatar", &handle_phantom_avatar, NULL));
menu->appendSeparator();
menu->append(new LLMenuItemCheckGL( "Enable AO",
&menu_toggle_control,
NULL,
&menu_check_control,
(void*)"AO.Enabled"));
menu->append(new LLMenuItemCallGL( "Animation Override...",
&handle_edit_ao, NULL));
menu->append(new LLMenuItemCheckGL( "Nimble",
&menu_toggle_control,
NULL,
@@ -3614,6 +3613,11 @@ void handle_open_message_log(void*)
LLFloaterMessageLog::show();
}
void handle_edit_ao(void*)
{
LLFloaterAO::show(NULL);
}
void handle_local_assets(void*)
{

View File

@@ -93,6 +93,7 @@
#include "llsdserialize.h" //For the client definitions
#include "llcachename.h"
#include "floaterao.h"
// <edit>
#include "llfloaterexploreanimations.h"
@@ -5540,9 +5541,13 @@ void LLVOAvatar::processAnimationStateChanges()
if (found_anim == mSignaledAnimations.end())
{
if (mIsSelf)
{
if ((gSavedSettings.getBOOL("AOEnabled")) && LLFloaterAO::stopMotion(anim_it->first, FALSE)) // if the AO replaced this anim serverside then stop it serverside
{
// return TRUE; //no local stop needed
}
}
processSingleAnimationStateChange(anim_it->first, FALSE);
// <edit>
@@ -5568,6 +5573,11 @@ void LLVOAvatar::processAnimationStateChanges()
// </edit>
if (processSingleAnimationStateChange(anim_it->first, TRUE))
{
if (mIsSelf && gSavedSettings.getBOOL("AOEnabled")) // AO is only for ME
{
LLFloaterAO::startMotion(anim_it->first, 0,FALSE); // AO overrides the anim if needed
}
mPlayingAnimations[anim_it->first] = anim_it->second;
++anim_it;
continue;
@@ -5577,16 +5587,6 @@ void LLVOAvatar::processAnimationStateChanges()
++anim_it;
}
// clear source information for animations which have been stopped
if (mIsSelf)
{
@@ -5642,6 +5642,14 @@ void LLVOAvatar::undeform()
if (found_anim == mSignaledAnimations.end())
{
if (mIsSelf)
{
if ((gSavedSettings.getBOOL("AOEnabled")) && LLFloaterAO::stopMotion(anim_it->first, FALSE)) // if the AO replaced this anim serverside then stop it serverside
{
// return TRUE; //no local stop needed
}
}
processSingleAnimationStateChange(anim_it->first, FALSE);
mPlayingAnimations.erase(anim_it++);
continue;
@@ -5865,6 +5873,11 @@ void LLVOAvatar::stopMotionFromSource(const LLUUID& source_id)
//-----------------------------------------------------------------------------
LLVector3 LLVOAvatar::getVolumePos(S32 joint_index, LLVector3& volume_offset)
{
if(joint_index < 0)
{
return LLVector3::zero;
}
if (joint_index > mNumCollisionVolumes)
{
return LLVector3::zero;
@@ -7222,6 +7235,7 @@ void LLVOAvatar::sitOnObject(LLViewerObject *sit_object)
gPipeline.markMoved(mDrawable, TRUE);
mIsSitting = TRUE;
LLFloaterAO::ChangeStand();
mRoot.getXform()->setParent(&sit_object->mDrawable->mXform); // LLVOAvatar::sitOnObject
mRoot.setPosition(getPosition());
mRoot.updateWorldMatrixChildren();
@@ -7298,6 +7312,7 @@ void LLVOAvatar::getOffObject()
mRoot.getXform()->update();
startMotion(ANIM_AGENT_BODY_NOISE);
LLFloaterAO::ChangeStand();
if (mIsSelf)
{

View File

@@ -0,0 +1,247 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater
name="geminifloater"
rect_control="AORect"
title="Animation Overrider"
can_resize="false"
can_minimize="true"
can_close="true"
can_drag_on_left="false"
width="610"
height="380">
<view_border blevel_style="in" border_thickness="0" bottom="-380" follows="left|top" height="380" left="1"
mouse_opaque="false" name="ao_notecard" width="610" />
<view_border blevel_style="in" bottom="340" follows="left|top" height="16" left="10"
mouse_opaque="false" name="ao_notecard_vis" width="180" />
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="0" drop_shadow_visible="true" follows="left|top"
font="SansSerifSmall" h_pad="0" halign="center" height="16" left_delta="0"
mouse_opaque="true" name="Give inventory"
tool_tip="Drop a ZHAO notecard here. Animations have to be in the same Inventory folder as the notecard." v_pad="2"
width="180">
Drop a ZHAO II notecard here
</text>
<view_border blevel_style="in" bottom_delta="-18" follows="left|top" height="16" left_delta="0"
mouse_opaque="false" name="ao_notecard_disp" width="180" />
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="0" drop_shadow_visible="true" follows="left|top"
font="SansSerifSmall" h_pad="0" halign="center" height="16" left_delta="0"
mouse_opaque="true" name="ao_nc_text"
tool_tip="" v_pad="2"
width="180">
Currently set to: ITEM
</text>
<button
name="opencard"
label="View Notecard"
font="SansSerifSmall"
left="10"
bottom_delta="-30"
width="110"
height="20"
follows="bottom|left"
/>
<button
name="reloadcard"
label="Reload"
font="SansSerifSmall"
left="124"
bottom_delta="0"
width="70"
height="20"
follows="bottom|left"
/>
<check_box bottom_delta="-24" control_name="AOEnabled" enabled="true"
follows="left|top" font="SansSerifSmall" height="16" initial_value="false" label="Enable animations override" left="10"
mouse_opaque="true" name="AOEnabled" radio_style="false" width="90" />
<check_box bottom_delta="-18" control_name="AOSitsEnabled" enabled="true"
follows="left|top" font="SansSerifSmall" height="16" initial_value="true" label="Enable sits override" left="10"
mouse_opaque="true" name="AOSitsEnabled" radio_style="false" width="90" />
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" follows="left|bottom"
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
mouse_opaque="true" name="buttons_desc" v_pad="0" width="180">
Stands:
</text>
<combo_box name="stands" label="" follows="left|top" height="20" left="10" width="180" bottom_delta="-20"/>
<button
name="prevstand"
tool_tip="previous stand"
label="&lt;&lt;"
font="SansSerifSmall"
left="10"
bottom_delta="-25"
width="90"
height="20"
follows="bottom|left"
/>
<button
name="nextstand"
tool_tip="next stand"
label="&gt;&gt;"
font="SansSerifSmall"
left="104"
bottom_delta="0"
width="90"
height="20"
follows="bottom|left"
/>
<check_box bottom_delta="-20" control_name="AOStandRandomize" enabled="true"
follows="left|top" font="SansSerifSmall" height="16" initial_value="false" label="Randomize stand order" left="10"
mouse_opaque="true" name="AOStandRandomize" radio_style="false" width="200" />
<check_box bottom_delta="-20" control_name="AONoStandsInMouselook" enabled="true"
follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
label="Disable stands in mouselook" left="10" mouse_opaque="true"
name="AONoStandsInMouselook" radio_style="false" width="180" />
<check_box bottom_delta="-20" control_name="EnableAORemote" enabled="true"
follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
label="Show AO toolbar" left="10" mouse_opaque="true"
name="ao_remote_checkbox" radio_style="false" width="180" />
<spinner bottom_delta="-20" decimal_digits="2" follows="left|top" height="16" control_name="AOStandInterval"
increment="1" initial_val="20" left="10" max_val="9000" min_val="1.00"
mouse_opaque="true" name="standtime" label="Stand time:" label_width="80"
tool_tip="AO stand time in seconds" width="180" />
<button
name="newcard"
label="New Notecard Template"
font="SansSerifSmall"
left="10"
bottom_delta="-32"
width="180"
height="20"
follows="bottom|left"
/>
<button bottom="4" follows="left|bottom" font="SansSerifSmall" halign="center"
height="20" label="More &gt;&gt;" left="118"
mouse_opaque="true" name="more_btn" scale_image="TRUE"
tool_tip="Advanced Options" width="76" />
<button bottom_delta="0" follows="left|bottom" font="SansSerifSmall" halign="center"
height="20" label="&lt;&lt; Less" left_delta="0"
mouse_opaque="true" name="less_btn" scale_image="TRUE"
tool_tip="Advanced Options" width="76" />
<tab_container label="Default" bottom="6" left="210" mouse_opaque="false" name="tabcontainer" tab_min_width="50" tab_position="top" width="390" height="350" bg_opaque_color="0,0,0,0.0">
<panel border="true" left="0" bottom="0" follows="left|top|right|bottom" height="350" label="Default Anims" mouse_opaque="true" name="tabdefaultanims" width="390">
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
mouse_opaque="true" name="textdefaultwalk" v_pad="0" width="180">
Default Walk:
</text>
<combo_box name="walks" label="" follows="left|top" height="20" left="10" width="180" bottom_delta="0" control_name="AODefaultWalk" />
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
mouse_opaque="true" name="textdefaultrun" v_pad="0" width="180">
Default Run:
</text>
<combo_box name="runs" label="" follows="left|top" height="20" left="10" width="180" bottom_delta="0" control_name="AODefaultRun" />
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
mouse_opaque="true" name="textdefaultjump" v_pad="0" width="180">
Default Jump:
</text>
<combo_box name="jumps" label="" follows="left|top" height="20" left="10" width="180" bottom_delta="0" control_name="AODefaultJump" />
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
mouse_opaque="true" name="textdefaultsit" v_pad="0" width="180">
Default Sit:
</text>
<combo_box name="sits" label="" follows="left|top" height="20" left="10" width="180" bottom_delta="0" control_name="AODefaultSit" />
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
mouse_opaque="true" name="textdefaultgsit" v_pad="0" width="180">
Default Groundsit:
</text>
<combo_box name="gsits" label="" follows="left|top" height="20" left="10" width="180" bottom_delta="0" control_name="AODefaultGroundSit" />
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
mouse_opaque="true" name="textdefaultcrouch" v_pad="0" width="180">
Default Crouch:
</text>
<combo_box name="crouchs" label="" follows="left|top" height="20" left="10" width="180" bottom_delta="0" control_name="AODefaultCrouch" />
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
mouse_opaque="true" name="textdefaultcrouchwalk" v_pad="0" width="180">
Default Crouchwalk:
</text>
<combo_box name="cwalks" label="" follows="left|top" height="20" left="10" width="180" bottom_delta="0" control_name="AODefaultCrouchWalk" />
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
mouse_opaque="true" name="textdefaultfall" v_pad="0" width="180">
Default Fall:
</text>
<combo_box name="falls" label="" follows="left|top" height="20" left="10" width="180" bottom_delta="0" control_name="AODefaultFall" />
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="280" drop_shadow_visible="true" follows="left|bottom"
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="200"
mouse_opaque="true" name="textdefaulthover" v_pad="0" width="180">
Default Hover:
</text>
<combo_box name="hovers" label="" follows="left|top" height="20" left_delta="0" width="180" bottom_delta="0" control_name="AODefaultHover" />
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="0"
mouse_opaque="true" name="textdefaultfly" v_pad="0" width="180">
Default Fly:
</text>
<combo_box name="flys" label="" follows="left|top" height="20" left_delta="0" width="180" bottom_delta="0" control_name="AODefaultFly" />
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="0"
mouse_opaque="true" name="textdefaultflyslow" v_pad="0" width="180">
Default Slow Fly:
</text>
<combo_box name="flyslows" label="" follows="left|top" height="20" left_delta="0" width="180" bottom_delta="0" control_name="AODefaultFlySlow" />
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="0"
mouse_opaque="true" name="textdefaultflyup" v_pad="0" width="180">
Default Upward Fly:
</text>
<combo_box name="flyups" label="" follows="left|top" height="20" left_delta="0" width="180" bottom_delta="0" control_name="AODefaultFlyUp" />
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="0"
mouse_opaque="true" name="textdefaultflydown" v_pad="0" width="180">
Default Downward Fly:
</text>
<combo_box name="flydowns" label="" follows="left|top" height="20" left_delta="0" width="180" bottom_delta="0" control_name="AODefaultFlyDown" />
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="0"
mouse_opaque="true" name="textdefaultland" v_pad="0" width="180">
Default Land:
</text>
<combo_box name="lands" label="" follows="left|top" height="20" left_delta="0" width="180" bottom_delta="0" control_name="AODefaultLand" />
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="0"
mouse_opaque="true" name="textdefaultstandup" v_pad="0" width="180">
Default Standup:
</text>
<combo_box name="standups" label="" follows="left|top" height="20" left_delta="0" width="180" bottom_delta="0" control_name="AODefaultStandUp" />
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="0"
mouse_opaque="true" name="textdefaultprejump" v_pad="0" width="180">
Default Pre-Jump:
</text>
<combo_box name="prejumps" label="" follows="left|top" height="20" left_delta="0" width="180" bottom_delta="0" control_name="AODefaultPreJump" />
</panel>
</tab_container>
</floater>

View File

@@ -6837,6 +6837,13 @@ No
[OLD_NAME] ([SLID]) is now known as [NEW_NAME].
</notification>
<notification
icon="notify.tga"
name="FirstAO"
type="notify">
For instructions, make a new template in the AO. Use the toolbar to toggle the AO on/off.
</notification>
</notifications>

View File

@@ -45,6 +45,11 @@
use_bounding_rect="true" width="395" />
</layout_stack>
</layout_panel>
<layout_panel auto_resize="false" bottom="0" left="0" min_width="96" mouse_opaque="false"
name="ao_remote_container" use_bounding_rect="true" user_resize="false"
width="100">
<panel background_visible="false" border="false" bottom="0" name="ao_remote" />
</layout_panel>
<layout_panel auto_resize="false" bottom="0" left="0" min_width="220" mouse_opaque="false"
name="media_remote_container" use_bounding_rect="true" user_resize="false"
width="220">