Merge branch 'master' of github.com:Beeks/Ascent
Conflicts: indra/newview/llpreviewgesture.cpp
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
<llsd>
|
||||
<map>
|
||||
<key>8873757c-092a-98fb-1afd-ecd347566fcd</key>
|
||||
<key>8873757c-092a-98fb-1afd-ecd347566fcd</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<array>
|
||||
@@ -9,182 +9,182 @@
|
||||
<real>1</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<key>multiple</key>
|
||||
<real>0</real>
|
||||
<key>name</key>
|
||||
<key>name</key>
|
||||
<string>Ascent</string>
|
||||
</map>
|
||||
<key>f12457b5-762e-52a7-efad-8f17f3b022ee</key>
|
||||
<key>f12457b5-762e-52a7-efad-8f17f3b022ee</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0.69999999999999996</real>
|
||||
<real>0.80000000000000004</real>
|
||||
<real>1.6000000238418579</real>
|
||||
<real>0.7</real>
|
||||
<real>0.8</real>
|
||||
<real>1.6</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<key>multiple</key>
|
||||
<real>2</real>
|
||||
<key>name</key>
|
||||
<key>name</key>
|
||||
<string>Anti-Life</string>
|
||||
</map>
|
||||
<key>0f6723d2-5b23-6b58-08ab-308112b33786</key>
|
||||
<key>0f6723d2-5b23-6b58-08ab-308112b33786</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0</real>
|
||||
<real>2</real>
|
||||
<real>2</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<key>multiple</key>
|
||||
<real>2</real>
|
||||
<key>name</key>
|
||||
<key>name</key>
|
||||
<string>CryoLife</string>
|
||||
</map>
|
||||
<key>e52d21f7-3c8b-819f-a3db-65c432295dac</key>
|
||||
<key>e52d21f7-3c8b-819f-a3db-65c432295dac</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0</real>
|
||||
<real>2</real>
|
||||
<real>2</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<key>multiple</key>
|
||||
<real>2</real>
|
||||
<key>name</key>
|
||||
<key>name</key>
|
||||
<string>CryoLife</string>
|
||||
</map>
|
||||
<key>d0091f21-1eef-a4ad-b358-249a8e5432ea</key>
|
||||
<key>d0091f21-1eef-a4ad-b358-249a8e5432ea</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0</real>
|
||||
<real>2</real>
|
||||
<real>2</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<key>multiple</key>
|
||||
<real>2</real>
|
||||
<key>name</key>
|
||||
<key>name</key>
|
||||
<string>CryoLife</string>
|
||||
</map>
|
||||
<key>7c4d47a3-0c51-04d1-fa47-e4f3ac12f59b</key>
|
||||
<key>7c4d47a3-0c51-04d1-fa47-e4f3ac12f59b</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0</real>
|
||||
<real>2</real>
|
||||
<real>2</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<key>multiple</key>
|
||||
<real>2</real>
|
||||
<key>name</key>
|
||||
<key>name</key>
|
||||
<string>CryoLife</string>
|
||||
</map>
|
||||
<key>8183e823-c443-2142-6eb6-2ab763d4f81c</key>
|
||||
<key>8183e823-c443-2142-6eb6-2ab763d4f81c</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0</real>
|
||||
<real>0</real>
|
||||
<real>1</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<key>multiple</key>
|
||||
<real>1</real>
|
||||
<key>name</key>
|
||||
<key>name</key>
|
||||
<string>Day Oh proxy</string>
|
||||
</map>
|
||||
<key>28b4da3f-5f9b-f44e-1387-6a115ab482c5</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0.64314000000000004</real>
|
||||
<real>0.89803999999999995</real>
|
||||
<real>0.99607999999999997</real>
|
||||
<key>28b4da3f-5f9b-f44e-1387-6a115ab482c5</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0.64</real>
|
||||
<real>0.9</real>
|
||||
<real>1.0</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<real>1</real>
|
||||
<key>name</key>
|
||||
<string>Diamond</string>
|
||||
</map>
|
||||
<key>072343d0-1ce9-0952-4106-5312af4a789a</key>
|
||||
<key>name</key>
|
||||
<string>Diamond</string>
|
||||
</map>
|
||||
<key>072343d0-1ce9-0952-4106-5312af4a789a</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0</real>
|
||||
<real>2</real>
|
||||
<real>0</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<key>multiple</key>
|
||||
<real>2</real>
|
||||
<key>name</key>
|
||||
<key>name</key>
|
||||
<string>Emerald</string>
|
||||
</map>
|
||||
<key>0ae2f973-98c1-a4e8-9f4b-9db2044ab079</key>
|
||||
<key>0ae2f973-98c1-a4e8-9f4b-9db2044ab079</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0</real>
|
||||
<real>2</real>
|
||||
<real>0</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<key>multiple</key>
|
||||
<real>2</real>
|
||||
<key>name</key>
|
||||
<key>name</key>
|
||||
<string>Emerald</string>
|
||||
</map>
|
||||
<key>1da8eb54-a70f-bd4a-77e5-c7b815c3b2a2</key>
|
||||
<key>1da8eb54-a70f-bd4a-77e5-c7b815c3b2a2</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0</real>
|
||||
<real>2</real>
|
||||
<real>0</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<key>multiple</key>
|
||||
<real>2</real>
|
||||
<key>name</key>
|
||||
<key>name</key>
|
||||
<string>Emerald</string>
|
||||
</map>
|
||||
<key>1e0948ab-706a-b309-434c-a694436a79be</key>
|
||||
<key>1e0948ab-706a-b309-434c-a694436a79be</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0</real>
|
||||
<real>2</real>
|
||||
<real>0</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<key>multiple</key>
|
||||
<real>2</real>
|
||||
<key>name</key>
|
||||
<key>name</key>
|
||||
<string>Emerald</string>
|
||||
</map>
|
||||
<key>4eb67510-0924-ebb1-50ca-8af5694cd267</key>
|
||||
<key>4eb67510-0924-ebb1-50ca-8af5694cd267</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0</real>
|
||||
<real>2</real>
|
||||
<real>0</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<key>multiple</key>
|
||||
<real>2</real>
|
||||
<key>name</key>
|
||||
<key>name</key>
|
||||
<string>Emerald</string>
|
||||
</map>
|
||||
<key>602243f4-8fb1-ac00-d5bc-7ab50c4433b7</key>
|
||||
<key>602243f4-8fb1-ac00-d5bc-7ab50c4433b7</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0</real>
|
||||
<real>2</real>
|
||||
@@ -280,7 +280,7 @@
|
||||
<key>name</key>
|
||||
<string>Emergence</string>
|
||||
</map>
|
||||
<key>734fed29-4c51-63e5-1648-6589949d7585</key>
|
||||
<key>734fed29-4c51-63e5-1648-6589949d7585</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<array>
|
||||
@@ -326,9 +326,9 @@
|
||||
<map>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>6.2999999999999998</real>
|
||||
<real>6.3</real>
|
||||
<real>3.5</real>
|
||||
<real>7</real>
|
||||
<real>7.0</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
@@ -392,21 +392,7 @@
|
||||
<key>name</key>
|
||||
<string>nolife</string>
|
||||
</map>
|
||||
<key>77662f23-c77a-9b4d-5558-26b757b2144c</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0.60000002384185791</real>
|
||||
<real>0.20000000298023224</real>
|
||||
<real>0.80000001192092896</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<real>1</real>
|
||||
<key>name</key>
|
||||
<string>PSL</string>
|
||||
</map>
|
||||
<key>d95e0d9a-4d40-ea1b-a054-8db87f583f58</key>
|
||||
<key>d95e0d9a-4d40-ea1b-a054-8db87f583f58</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<array>
|
||||
@@ -462,7 +448,7 @@
|
||||
<key>name</key>
|
||||
<string>Onyx</string>
|
||||
</map>
|
||||
<key>ed63fbd0-589e-fe1d-a3d0-16905efaa96b</key>
|
||||
<key>ed63fbd0-589e-fe1d-a3d0-16905efaa96b</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<array>
|
||||
@@ -478,6 +464,20 @@
|
||||
</map>
|
||||
<key>f3fd74a6-fee7-4b2f-93ae-ddcb5991da04</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0.60000002384185791</real>
|
||||
<real>0.20000000298023224</real>
|
||||
<real>0.80000001192092896</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<real>1</real>
|
||||
<key>name</key>
|
||||
<string>PSL</string>
|
||||
</map>
|
||||
<key>77662f23-c77a-9b4d-5558-26b757b2144c</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0.60000002384185791</real>
|
||||
@@ -518,21 +518,49 @@
|
||||
<key>name</key>
|
||||
<string>Ruby</string>
|
||||
</map>
|
||||
<key>872c0005-3095-0967-866d-11cd71115c22</key>
|
||||
<key>872c0005-3095-0967-866d-11cd71115c22</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0</real>
|
||||
<real>1</real>
|
||||
<real>2</real>
|
||||
<real>3</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<key>multiple</key>
|
||||
<real>3</real>
|
||||
<key>name</key>
|
||||
<key>name</key>
|
||||
<string>Simfed</string>
|
||||
</map>
|
||||
<key>11ad2452-ce54-8d65-7c23-05589b59f516</key>
|
||||
<key>11ad2452-ce54-8d65-7c23-05589b59f516</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0</real>
|
||||
<real>0.5</real>
|
||||
<real>1</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<real>1</real>
|
||||
<key>name</key>
|
||||
<string>VerticalLife</string>
|
||||
</map>
|
||||
<key>e734563e-1c31-2a35-3ed5-8552c807439f</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0</real>
|
||||
<real>0.5</real>
|
||||
<real>1</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<real>1</real>
|
||||
<key>name</key>
|
||||
<string>VerticalLife</string>
|
||||
</map>
|
||||
<key>3ab7e2fa-9572-ef36-1a30-d855dbea4f92</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<array>
|
||||
@@ -541,110 +569,82 @@
|
||||
<real>1</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<key>multiple</key>
|
||||
<real>1</real>
|
||||
<key>name</key>
|
||||
<key>name</key>
|
||||
<string>VerticalLife</string>
|
||||
</map>
|
||||
<key>e734563e-1c31-2a35-3ed5-8552c807439f</key>
|
||||
<key>58a8b7ec-1455-7162-5d96-d3c3ead2ed71</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0</real>
|
||||
<real>0.5</real>
|
||||
<real>1</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<key>multiple</key>
|
||||
<real>1</real>
|
||||
<key>name</key>
|
||||
<key>name</key>
|
||||
<string>VerticalLife</string>
|
||||
</map>
|
||||
<key>3ab7e2fa-9572-ef36-1a30-d855dbea4f92</key>
|
||||
<key>841ef25b-3b90-caf9-ea3d-5649e755db65</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0</real>
|
||||
<real>0.5</real>
|
||||
<real>1</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<key>multiple</key>
|
||||
<real>1</real>
|
||||
<key>name</key>
|
||||
<key>name</key>
|
||||
<string>VerticalLife</string>
|
||||
</map>
|
||||
<key>58a8b7ec-1455-7162-5d96-d3c3ead2ed71</key>
|
||||
<key>c228d1cf-4b5d-4ba8-84f4-899a0796aa97</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0</real>
|
||||
<real>0.5</real>
|
||||
<real>1</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<real>1</real>
|
||||
<key>name</key>
|
||||
<string>VerticalLife</string>
|
||||
</map>
|
||||
<key>841ef25b-3b90-caf9-ea3d-5649e755db65</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>0</real>
|
||||
<real>0.5</real>
|
||||
<real>1</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<real>1</real>
|
||||
<key>name</key>
|
||||
<string>VerticalLife</string>
|
||||
</map>
|
||||
<key>c228d1cf-4b5d-4ba8-84f4-899a0796aa97</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>1</real>
|
||||
<real>0.55000000000000004</real>
|
||||
<real>0.75</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<key>multiple</key>
|
||||
<real>1</real>
|
||||
<key>name</key>
|
||||
<key>name</key>
|
||||
<string>Viewer 2.0</string>
|
||||
</map>
|
||||
<key>c252d89d-6f7c-7d90-f430-d140d2e3fbbe</key>
|
||||
<key>c252d89d-6f7c-7d90-f430-d140d2e3fbbe</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>1</real>
|
||||
<real>0</real>
|
||||
<real>0</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<key>multiple</key>
|
||||
<real>1</real>
|
||||
<key>name</key>
|
||||
<key>name</key>
|
||||
<string>VLife</string>
|
||||
</map>
|
||||
<key>c58fca06-33b3-827d-d81c-a886a631affc</key>
|
||||
<key>c58fca06-33b3-827d-d81c-a886a631affc</key>
|
||||
<map>
|
||||
<key>color</key>
|
||||
<key>color</key>
|
||||
<array>
|
||||
<real>1</real>
|
||||
<real>0.61175999999999997</real>
|
||||
<real>0</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
<key>multiple</key>
|
||||
<key>multiple</key>
|
||||
<real>0</real>
|
||||
<key>name</key>
|
||||
<key>name</key>
|
||||
<string>Whale</string>
|
||||
</map>
|
||||
<key>isComplete</key>
|
||||
<string>true</string>
|
||||
<key>isComplete</key>
|
||||
<string>true</string>
|
||||
</map>
|
||||
</llsd>
|
||||
|
||||
@@ -10172,7 +10172,7 @@
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>PlayIMSound</key>
|
||||
<map>
|
||||
|
||||
@@ -100,6 +100,7 @@ private:
|
||||
BOOL mPrivateLookAt;
|
||||
BOOL mShowLookAt;
|
||||
BOOL mRevokePermsOnStandUp;
|
||||
BOOL mDisableClickSit;
|
||||
};
|
||||
|
||||
|
||||
@@ -189,6 +190,7 @@ void LLPrefsAscentSysImpl::refreshValues()
|
||||
mPrivateLookAt = gSavedSettings.getBOOL("PrivateLookAt");
|
||||
mShowLookAt = LLHUDEffectLookAt::sDebugLookAt;
|
||||
mRevokePermsOnStandUp = gSavedSettings.getBOOL("RevokePermsOnStandUp");
|
||||
mDisableClickSit = gSavedSettings.getBOOL("DisableClickSit");
|
||||
}
|
||||
|
||||
void LLPrefsAscentSysImpl::refresh()
|
||||
@@ -280,6 +282,7 @@ void LLPrefsAscentSysImpl::refresh()
|
||||
childSetValue("private_look_at_check", mPrivateLookAt);
|
||||
childSetValue("show_look_at_check", mShowLookAt);
|
||||
childSetValue("revoke_perms_on_stand_up_check", mRevokePermsOnStandUp);
|
||||
childSetValue("disable_click_sit_check", mDisableClickSit);
|
||||
}
|
||||
|
||||
void LLPrefsAscentSysImpl::cancel()
|
||||
@@ -454,6 +457,7 @@ void LLPrefsAscentSysImpl::apply()
|
||||
gSavedSettings.setBOOL("PrivateLookAt", childGetValue("private_look_at_check"));
|
||||
LLHUDEffectLookAt::sDebugLookAt = childGetValue("show_look_at_check");
|
||||
gSavedSettings.setBOOL("RevokePermsOnStandUp", childGetValue("revoke_perms_on_stand_up_check"));
|
||||
gSavedSettings.setBOOL("DisableClickSit", childGetValue("disable_click_sit_check"));
|
||||
|
||||
refreshValues();
|
||||
refresh();
|
||||
|
||||
@@ -4969,14 +4969,7 @@ void LLAgent::requestStopMotion( LLMotion* motion )
|
||||
void LLAgent::onAnimStop(const LLUUID& id)
|
||||
{
|
||||
// handle automatic state transitions (based on completion of animation playback)
|
||||
if(id == ANIM_AGENT_STAND
|
||||
// <edit>
|
||||
// I really do not like doing this
|
||||
|| id == ANIM_AGENT_STAND_1
|
||||
|| id == ANIM_AGENT_STAND_2
|
||||
|| id == ANIM_AGENT_STAND_3
|
||||
|| id == ANIM_AGENT_STAND_4)
|
||||
// </edit>
|
||||
if(LLAO::isStand(id))
|
||||
{
|
||||
// <edit>
|
||||
if(LLAO::isEnabled())
|
||||
|
||||
@@ -1,24 +1,89 @@
|
||||
// <edit>
|
||||
/* DOUBLE EDIT REACH AROUND
|
||||
Rewritten by Hg Beeks
|
||||
|
||||
We will handle drag-and-drop in the future. Reminder - Look in llPreviewGesture for handleDragAndDrop. -HgB
|
||||
*/
|
||||
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
#include "llao.h"
|
||||
#include "llviewercontrol.h"
|
||||
#include "lluictrlfactory.h"
|
||||
#include "llfilepicker.h"
|
||||
#include "llsdserialize.h"
|
||||
|
||||
#include "llagent.h"
|
||||
#include "llanimstatelabels.h"
|
||||
#include "llao.h"
|
||||
#include "llfilepicker.h"
|
||||
#include "llinventorymodel.h"
|
||||
#include "llscrolllistctrl.h"
|
||||
#include "llsdserialize.h"
|
||||
#include "lluictrlfactory.h"
|
||||
#include "llviewercontrol.h"
|
||||
#include "llvoavatar.h"
|
||||
//this is for debugging ;D
|
||||
//#define AO_DEBUG
|
||||
#define AO_DEBUG
|
||||
|
||||
//static variables
|
||||
std::list<LLUUID> LLAO::mStandOverrides;
|
||||
std::list<std::string> LLAO::mStandOverrides;
|
||||
LLSD LLAO::mAnimationOverrides;
|
||||
S32 LLAO::mAnimationIndex;
|
||||
|
||||
std::map<LLUUID,LLUUID> LLAO::mOverrides;
|
||||
LLFloaterAO* LLFloaterAO::sInstance;
|
||||
BOOL LLAO::mEnabled = FALSE;
|
||||
F32 LLAO::mPeriod;
|
||||
LLAOStandTimer* LLAO::mTimer = NULL;
|
||||
|
||||
class ObjectNameMatches : public LLInventoryCollectFunctor
|
||||
{
|
||||
public:
|
||||
ObjectNameMatches(std::string name)
|
||||
{
|
||||
sName = name;
|
||||
}
|
||||
virtual ~ObjectNameMatches() {}
|
||||
virtual bool operator()(LLInventoryCategory* cat,
|
||||
LLInventoryItem* item)
|
||||
{
|
||||
if(item)
|
||||
{
|
||||
return (item->getName() == sName);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
private:
|
||||
std::string sName;
|
||||
};
|
||||
|
||||
const LLUUID& LLAO::getAssetIDByName(const std::string& name)
|
||||
{
|
||||
if (name.empty()) return LLUUID::null;
|
||||
|
||||
LLViewerInventoryCategory::cat_array_t cats;
|
||||
LLViewerInventoryItem::item_array_t items;
|
||||
ObjectNameMatches objectnamematches(name);
|
||||
gInventory.collectDescendentsIf(LLUUID::null,cats,items,FALSE,objectnamematches);
|
||||
|
||||
if (items.count())
|
||||
{
|
||||
return items[0]->getAssetUUID();
|
||||
}
|
||||
return LLUUID::null;
|
||||
};
|
||||
|
||||
LLUUID LLAO::getFrontUUID()
|
||||
{
|
||||
if (!LLAO::mStandOverrides.empty())
|
||||
return LLUUID(LLAO::getAssetIDByName(LLAO::mStandOverrides.front()));
|
||||
else
|
||||
return LLUUID::null;
|
||||
}
|
||||
|
||||
LLUUID LLAO::getBackUUID()
|
||||
{
|
||||
if (!LLAO::mStandOverrides.empty())
|
||||
return LLUUID(LLAO::getAssetIDByName(LLAO::mStandOverrides.back()));
|
||||
else
|
||||
return LLUUID::null;
|
||||
}
|
||||
|
||||
LLAOStandTimer::LLAOStandTimer(F32 period) : LLEventTimer(period)
|
||||
{
|
||||
}
|
||||
@@ -40,20 +105,20 @@ BOOL LLAOStandTimer::tick()
|
||||
if(LLAO::isStand(anim_it->first))
|
||||
{
|
||||
//back is always last played, front is next
|
||||
avatarp->stopMotion(LLAO::mStandOverrides.back());
|
||||
avatarp->stopMotion(LLAO::getBackUUID());
|
||||
#ifdef AO_DEBUG
|
||||
llinfos << "Stopping " << LLAO::mStandOverrides.back().asString() << llendl;
|
||||
//llinfos << "Stopping " << LLAO::mStandOverrides.back() << llendl;
|
||||
#endif
|
||||
avatarp->startMotion(LLAO::mStandOverrides.front());
|
||||
avatarp->startMotion(LLAO::getFrontUUID());
|
||||
#ifdef AO_DEBUG
|
||||
llinfos << "Starting " << LLAO::mStandOverrides.front().asString() << llendl;
|
||||
//llinfos << "Starting " << LLAO::mStandOverrides.front() << llendl;
|
||||
#endif
|
||||
LLAO::mStandOverrides.push_back(LLAO::mStandOverrides.front());
|
||||
LLAO::mStandOverrides.pop_front();
|
||||
LLFloaterAO* ao = LLFloaterAO::sInstance;
|
||||
if(ao)
|
||||
{
|
||||
ao->mStandsCombo->setSimple(LLStringExplicit(LLAO::mStandOverrides.back().asString()));
|
||||
//ao->mStandsCombo->setSimple(LLStringExplicit(LLAO::mStandOverrides.back().asString()));
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -73,10 +138,10 @@ void LLAOStandTimer::pause()
|
||||
if (avatarp)
|
||||
{
|
||||
#ifdef AO_DEBUG
|
||||
llinfos << "Stopping " << LLAO::mStandOverrides.back().asString() << llendl;
|
||||
//llinfos << "Stopping " << LLAO::mStandOverrides.back() << llendl;
|
||||
#endif
|
||||
gAgent.sendAnimationRequest(LLAO::mStandOverrides.back(), ANIM_REQUEST_STOP);
|
||||
avatarp->stopMotion(LLAO::mStandOverrides.back());
|
||||
gAgent.sendAnimationRequest(LLAO::getBackUUID(), ANIM_REQUEST_STOP);
|
||||
avatarp->stopMotion(LLAO::getBackUUID());
|
||||
}
|
||||
mEventTimer.reset();
|
||||
mEventTimer.stop();
|
||||
@@ -93,26 +158,38 @@ void LLAOStandTimer::resume()
|
||||
if (avatarp)
|
||||
{
|
||||
#ifdef AO_DEBUG
|
||||
llinfos << "Starting " << LLAO::mStandOverrides.back().asString() << llendl;
|
||||
//llinfos << "Starting " << LLAO::mStandOverrides.back() << llendl;
|
||||
#endif
|
||||
gAgent.sendAnimationRequest(LLAO::mStandOverrides.back(), ANIM_REQUEST_START);
|
||||
avatarp->startMotion(LLAO::mStandOverrides.back());
|
||||
gAgent.sendAnimationRequest(LLAO::getBackUUID(), ANIM_REQUEST_START);
|
||||
avatarp->startMotion(LLAO::getBackUUID());
|
||||
}
|
||||
mEventTimer.reset();
|
||||
mEventTimer.start();
|
||||
mPaused = FALSE;
|
||||
}
|
||||
|
||||
// Used for sorting
|
||||
struct SortItemPtrsByName
|
||||
{
|
||||
bool operator()(const LLInventoryItem* i1, const LLInventoryItem* i2)
|
||||
{
|
||||
return (LLStringUtil::compareDict(i1->getName(), i2->getName()) < 0);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
void LLAOStandTimer::reset()
|
||||
{
|
||||
mEventTimer.reset();
|
||||
}
|
||||
|
||||
//static
|
||||
void LLAO::setup()
|
||||
{
|
||||
mEnabled = gSavedSettings.getBOOL("AO.Enabled");
|
||||
mPeriod = gSavedSettings.getF32("AO.Period");
|
||||
mTimer = new LLAOStandTimer(mPeriod);
|
||||
mAnimationIndex = 0;
|
||||
gSavedSettings.getControl("AO.Enabled")->getSignal()->connect(boost::bind(&handleAOEnabledChanged, _1));
|
||||
gSavedSettings.getControl("AO.Period")->getSignal()->connect(boost::bind(&handleAOPeriodChanged, _1));
|
||||
}
|
||||
@@ -179,41 +256,42 @@ BOOL LLAO::isStand(LLUUID _id)
|
||||
if(id == "f22fed8b-a5ed-2c93-64d5-bdd8b93c889f") return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL LLAO::isVoice(LLUUID _id)
|
||||
{
|
||||
std::string id = _id.asString();
|
||||
//ALL KNOWN VOICE ANIMS
|
||||
if(id == "3557510a-5eb4-d0ce-0b91-67c72aa75312") return TRUE;
|
||||
if(id == "a71890f1-0dab-8744-fd47-7defaf411dbf") return TRUE;
|
||||
if(id == "c1802201-5f4e-366f-7f78-2d08ec6ea54a") return TRUE;
|
||||
if(id == "68db359f-4c9c-0932-5f1e-e95e3a0b19bc") return TRUE;
|
||||
if(id == "7ef0d5c0-3346-06e4-5cfc-f081db108baa") return TRUE;
|
||||
if(id == "28a3f544-268d-da71-7da6-82c8dd522cb9") return TRUE;
|
||||
if(id == "cc340155-3e9d-60fe-d8e3-9e9abc7062d1") return TRUE;
|
||||
if(id == "55fe6788-8a16-d998-2f63-3c1eab2b6009") return TRUE;
|
||||
if(id == "69d5a8ed-9ec6-6dac-842f-d92d82e69428") return TRUE;
|
||||
if(id == "9a7f3201-7bbd-4f75-b762-24270536e4e3") return TRUE;
|
||||
if(id == "37694185-3107-d418-3a20-0181424e542d") return TRUE;
|
||||
if(id == "cb1139b6-e7c3-fdc7-a9c1-e21673d7a50e") return TRUE;
|
||||
if(id == "bbf194d1-a118-1312-998b-8145cec6eaff") return TRUE;
|
||||
if(id == "593e9a3d-58d8-c594-d6dd-f4b98965202e") return TRUE;
|
||||
if(id == "2b78c24a-2451-6135-fc49-ad274552bb68") return TRUE;
|
||||
if(id == "0f645c60-3151-2805-b6f7-28e710ed22ac") return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//static
|
||||
void LLAO::refresh()
|
||||
{
|
||||
mOverrides.clear();
|
||||
mStandOverrides.clear();
|
||||
mAnimationOverrides.clear();
|
||||
LLSD settings = gSavedPerAccountSettings.getLLSD("AO.Settings");
|
||||
//S32 version = (S32)settings["version"].asInteger();
|
||||
LLSD overrides = settings["overrides"];
|
||||
LLSD::map_iterator sd_it = overrides.beginMap();
|
||||
LLSD::map_iterator sd_end = overrides.endMap();
|
||||
for( ; sd_it != sd_end; sd_it++)
|
||||
{
|
||||
if(sd_it->first == "stands")
|
||||
for(LLSD::array_iterator itr = sd_it->second.beginArray();
|
||||
itr != sd_it->second.endArray(); ++itr)
|
||||
{
|
||||
//list of listness
|
||||
if(itr->asUUID().notNull())
|
||||
mStandOverrides.push_back(itr->asUUID());
|
||||
}
|
||||
// ignore if override is null key...
|
||||
if(sd_it->second.asUUID().isNull()
|
||||
// don't allow override to be used as a trigger
|
||||
|| mOverrides.find(sd_it->second.asUUID()) != mOverrides.end())
|
||||
continue;
|
||||
else if(LLAO::isStand(LLUUID(sd_it->first)))
|
||||
//list of listness
|
||||
mStandOverrides.push_back(sd_it->second.asUUID());
|
||||
else
|
||||
//add to the list
|
||||
mOverrides[LLUUID(sd_it->first)] = sd_it->second.asUUID();
|
||||
}
|
||||
mAnimationOverrides = settings["overrides"];
|
||||
llinfos << "Stand count: " << mAnimationOverrides["Stands"].size() << llendl;
|
||||
}
|
||||
|
||||
//static
|
||||
//static ------------- Floater
|
||||
void LLFloaterAO::show()
|
||||
{
|
||||
if(sInstance)
|
||||
@@ -236,191 +314,162 @@ LLFloaterAO::~LLFloaterAO()
|
||||
|
||||
BOOL LLFloaterAO::postBuild(void)
|
||||
{
|
||||
LLComboBox* combo;
|
||||
LLScrollListCtrl* list;
|
||||
|
||||
childSetAction("btn_save", onClickSave, this);
|
||||
childSetAction("btn_load", onClickLoad, this);
|
||||
|
||||
childSetCommitCallback("line_walking", onCommitAnim, this);
|
||||
childSetCommitCallback("line_running", onCommitAnim, this);
|
||||
childSetCommitCallback("line_crouchwalk", onCommitAnim, this);
|
||||
childSetCommitCallback("line_flying", onCommitAnim, this);
|
||||
childSetCommitCallback("line_turn_left", onCommitAnim, this);
|
||||
childSetCommitCallback("line_turn_right", onCommitAnim, this);
|
||||
childSetCommitCallback("line_jumping", onCommitAnim, this);
|
||||
childSetCommitCallback("line_fly_up", onCommitAnim, this);
|
||||
childSetCommitCallback("line_crouching", onCommitAnim, this);
|
||||
childSetCommitCallback("line_fly_down", onCommitAnim, this);
|
||||
LLComboBox* combo = getChild<LLComboBox>( "combo_stands");
|
||||
combo->setAllowTextEntry(TRUE,36,TRUE);
|
||||
combo->setCommitCallback(onCommitStands);
|
||||
combo = getChild<LLComboBox>( "combo_anim_type");
|
||||
combo->setCommitCallback(onCommitType);
|
||||
combo->setCallbackUserData(this);
|
||||
mStandsCombo = combo;
|
||||
childSetAction("combo_stands_add", onClickStandAdd, this);
|
||||
childSetAction("combo_stands_delete", onClickStandRemove, this);
|
||||
childSetCommitCallback("line_hover", onCommitAnim, this);
|
||||
childSetCommitCallback("line_sitting", onCommitAnim, this);
|
||||
childSetCommitCallback("line_prejump", onCommitAnim, this);
|
||||
childSetCommitCallback("line_falling", onCommitAnim, this);
|
||||
childSetCommitCallback("line_stride", onCommitAnim, this);
|
||||
childSetCommitCallback("line_soft_landing", onCommitAnim, this);
|
||||
childSetCommitCallback("line_medium_landing", onCommitAnim, this);
|
||||
childSetCommitCallback("line_hard_landing", onCommitAnim, this);
|
||||
childSetCommitCallback("line_flying_slow", onCommitAnim, this);
|
||||
childSetCommitCallback("line_sitting_on_ground", onCommitAnim, this);
|
||||
refresh();
|
||||
return TRUE;
|
||||
}
|
||||
combo->selectFirstItem();
|
||||
mAnimTypeCombo = combo;
|
||||
mCurrentAnimType = mAnimTypeCombo->getValue();
|
||||
|
||||
combo = getChild<LLComboBox>( "combo_anim_list");
|
||||
mAnimListCombo = combo;
|
||||
childSetAction("combo_anim_add", onClickAnimAdd, this);
|
||||
childSetAction("combo_anim_delete", onClickAnimRemove, this);
|
||||
|
||||
std::string LLFloaterAO::idstr(LLUUID id)
|
||||
{
|
||||
if(id.notNull()) return id.asString();
|
||||
else return "";
|
||||
list = getChild<LLScrollListCtrl>("active_anim_list");
|
||||
mAnimationList = list;
|
||||
|
||||
addAnimations();
|
||||
|
||||
refresh();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void LLFloaterAO::refresh()
|
||||
{
|
||||
childSetText("line_walking", idstr(LLAO::mOverrides[LLUUID("6ed24bd8-91aa-4b12-ccc7-c97c857ab4e0")]));
|
||||
childSetText("line_running", idstr(LLAO::mOverrides[LLUUID("05ddbff8-aaa9-92a1-2b74-8fe77a29b445")]));
|
||||
childSetText("line_crouchwalk", idstr(LLAO::mOverrides[LLUUID("47f5f6fb-22e5-ae44-f871-73aaaf4a6022")]));
|
||||
childSetText("line_flying", idstr(LLAO::mOverrides[LLUUID("aec4610c-757f-bc4e-c092-c6e9caf18daf")]));
|
||||
childSetText("line_turn_left", idstr(LLAO::mOverrides[LLUUID("56e0ba0d-4a9f-7f27-6117-32f2ebbf6135")]));
|
||||
childSetText("line_turn_right", idstr(LLAO::mOverrides[LLUUID("2d6daa51-3192-6794-8e2e-a15f8338ec30")]));
|
||||
childSetText("line_jumping", idstr(LLAO::mOverrides[LLUUID("2305bd75-1ca9-b03b-1faa-b176b8a8c49e")]));
|
||||
childSetText("line_fly_up", idstr(LLAO::mOverrides[LLUUID("62c5de58-cb33-5743-3d07-9e4cd4352864")]));
|
||||
childSetText("line_crouching", idstr(LLAO::mOverrides[LLUUID("201f3fdf-cb1f-dbec-201f-7333e328ae7c")]));
|
||||
childSetText("line_fly_down", idstr(LLAO::mOverrides[LLUUID("20f063ea-8306-2562-0b07-5c853b37b31e")]));
|
||||
mStandsCombo->clearRows();
|
||||
for(std::list<LLUUID>::iterator itr = LLAO::mStandOverrides.begin();itr != LLAO::mStandOverrides.end();
|
||||
itr++)
|
||||
mAnimationList->deleteAllItems();
|
||||
S32 count = LLAO::mAnimationOverrides[mCurrentAnimType].size();
|
||||
llinfos << "Refreshed, building animation list for " << mCurrentAnimType << ", Count:" << count << llendl;
|
||||
int i;
|
||||
for(i = 0; i < count; i++)
|
||||
{
|
||||
mStandsCombo->add((*itr).asString());
|
||||
std::string name = LLAO::mAnimationOverrides[mCurrentAnimType][i].asString();
|
||||
llinfos << "Adding " << name << llendl;
|
||||
mAnimationList->addSimpleElement(name, ADD_BOTTOM);
|
||||
}
|
||||
mStandsCombo->setSimple(LLStringExplicit(LLAO::mStandOverrides.back().asString()));
|
||||
childSetText("line_hover", idstr(LLAO::mOverrides[LLUUID("4ae8016b-31b9-03bb-c401-b1ea941db41d")]));
|
||||
childSetText("line_sitting", idstr(LLAO::mOverrides[LLUUID("1a5fe8ac-a804-8a5d-7cbd-56bd83184568")]));
|
||||
childSetText("line_prejump", idstr(LLAO::mOverrides[LLUUID("7a4e87fe-de39-6fcb-6223-024b00893244")]));
|
||||
childSetText("line_falling", idstr(LLAO::mOverrides[LLUUID("666307d9-a860-572d-6fd4-c3ab8865c094")]));
|
||||
childSetText("line_stride", idstr(LLAO::mOverrides[LLUUID("1cb562b0-ba21-2202-efb3-30f82cdf9595")]));
|
||||
childSetText("line_soft_landing", idstr(LLAO::mOverrides[LLUUID("7a17b059-12b2-41b1-570a-186368b6aa6f")]));
|
||||
childSetText("line_medium_landing", idstr(LLAO::mOverrides[LLUUID("f4f00d6e-b9fe-9292-f4cb-0ae06ea58d57")]));
|
||||
childSetText("line_hard_landing", idstr(LLAO::mOverrides[LLUUID("3da1d753-028a-5446-24f3-9c9b856d9422")]));
|
||||
childSetText("line_flying_slow", idstr(LLAO::mOverrides[LLUUID("2b5a38b2-5e00-3a97-a495-4c826bc443e6")]));
|
||||
childSetText("line_sitting_on_ground", idstr(LLAO::mOverrides[LLUUID("1a2bd58e-87ff-0df8-0b4c-53e047b0bb6e")]));
|
||||
}
|
||||
// static
|
||||
void LLFloaterAO::onCommitStands(LLUICtrl* ctrl, void* user_data)
|
||||
void LLFloaterAO::onCommitType(LLUICtrl* ctrl, void* user_data)
|
||||
{
|
||||
//LLFloaterAO* floater = (LLFloaterAO*)user_data;
|
||||
LLUUID id = ctrl->getValue().asUUID();
|
||||
std::list<LLUUID>::iterator itr = std::find(LLAO::mStandOverrides.begin(),LLAO::mStandOverrides.end(),id);
|
||||
LLVOAvatar* avatarp = gAgent.getAvatarObject();
|
||||
if(id.notNull() && itr != LLAO::mStandOverrides.end())
|
||||
{
|
||||
//back is always last played
|
||||
avatarp->stopMotion(LLAO::mStandOverrides.back());
|
||||
avatarp->startMotion(id);
|
||||
LLAO::mStandOverrides.push_back(id);
|
||||
LLAO::mStandOverrides.erase(itr);
|
||||
|
||||
LLAO::mTimer->reset();
|
||||
}
|
||||
onCommitAnim(NULL,user_data);
|
||||
LLFloaterAO* floater = (LLFloaterAO*)user_data;
|
||||
floater->mCurrentAnimType = floater->mAnimTypeCombo->getValue();
|
||||
floater->refresh();
|
||||
}
|
||||
|
||||
void LLFloaterAO::addAnimations()
|
||||
{
|
||||
mAnimListCombo->removeall();
|
||||
|
||||
std::string none_text = getString("none_text");
|
||||
mAnimListCombo->add(none_text, LLUUID::null);
|
||||
|
||||
// Add all the default (legacy) animations
|
||||
S32 i;
|
||||
|
||||
// Get all inventory items that are animations
|
||||
LLViewerInventoryCategory::cat_array_t cats;
|
||||
LLViewerInventoryItem::item_array_t items;
|
||||
LLIsTypeWithPermissions is_copyable_animation(LLAssetType::AT_ANIMATION,
|
||||
PERM_NONE,
|
||||
gAgent.getID(),
|
||||
gAgent.getGroupID());
|
||||
gInventory.collectDescendentsIf(gAgent.getInventoryRootID(),
|
||||
cats,
|
||||
items,
|
||||
LLInventoryModel::EXCLUDE_TRASH,
|
||||
is_copyable_animation);
|
||||
|
||||
// Copy into something we can sort
|
||||
std::vector<LLInventoryItem*> animations;
|
||||
|
||||
S32 count = items.count();
|
||||
for(i = 0; i < count; ++i)
|
||||
{
|
||||
animations.push_back( items.get(i) );
|
||||
}
|
||||
|
||||
// Do the sort
|
||||
std::sort(animations.begin(), animations.end(), SortItemPtrsByName());
|
||||
|
||||
// And load up the combobox
|
||||
std::vector<LLInventoryItem*>::iterator it;
|
||||
for (it = animations.begin(); it != animations.end(); ++it)
|
||||
{
|
||||
LLInventoryItem* item = *it;
|
||||
mAnimListCombo->add(item->getName(), item->getAssetUUID(), ADD_BOTTOM);
|
||||
}
|
||||
}
|
||||
|
||||
// static
|
||||
void LLFloaterAO::onCommitAnim(LLUICtrl* ctrl, void* user_data)
|
||||
{
|
||||
LLFloaterAO* floater = (LLFloaterAO*)user_data;
|
||||
|
||||
LLSD overrides;
|
||||
LLUUID id;
|
||||
id = LLUUID(floater->childGetValue("line_walking").asString());
|
||||
if(id.notNull()) overrides["6ed24bd8-91aa-4b12-ccc7-c97c857ab4e0"] = id;
|
||||
id = LLUUID(floater->childGetValue("line_running").asString());
|
||||
if(id.notNull()) overrides["05ddbff8-aaa9-92a1-2b74-8fe77a29b445"] = id;
|
||||
id = LLUUID(floater->childGetValue("line_crouchwalk").asString());
|
||||
if(id.notNull()) overrides["47f5f6fb-22e5-ae44-f871-73aaaf4a6022"] = id;
|
||||
id = LLUUID(floater->childGetValue("line_flying").asString());
|
||||
if(id.notNull()) overrides["aec4610c-757f-bc4e-c092-c6e9caf18daf"] = id;
|
||||
id = LLUUID(floater->childGetValue("line_turn_left").asString());
|
||||
if(id.notNull()) overrides["56e0ba0d-4a9f-7f27-6117-32f2ebbf6135"] = id;
|
||||
id = LLUUID(floater->childGetValue("line_turn_right").asString());
|
||||
if(id.notNull()) overrides["2d6daa51-3192-6794-8e2e-a15f8338ec30"] = id;
|
||||
id = LLUUID(floater->childGetValue("line_jumping").asString());
|
||||
if(id.notNull()) overrides["2305bd75-1ca9-b03b-1faa-b176b8a8c49e"] = id;
|
||||
id = LLUUID(floater->childGetValue("line_fly_up").asString());
|
||||
if(id.notNull()) overrides["62c5de58-cb33-5743-3d07-9e4cd4352864"] = id;
|
||||
id = LLUUID(floater->childGetValue("line_crouching").asString());
|
||||
if(id.notNull()) overrides["201f3fdf-cb1f-dbec-201f-7333e328ae7c"] = id;
|
||||
id = LLUUID(floater->childGetValue("line_fly_down").asString());
|
||||
if(id.notNull()) overrides["20f063ea-8306-2562-0b07-5c853b37b31e"] = id;
|
||||
id = LLUUID(floater->childGetValue("line_hover").asString());
|
||||
if(id.notNull()) overrides["4ae8016b-31b9-03bb-c401-b1ea941db41d"] = id;
|
||||
id = LLUUID(floater->childGetValue("line_sitting").asString());
|
||||
if(id.notNull()) overrides["1a5fe8ac-a804-8a5d-7cbd-56bd83184568"] = id;
|
||||
id = LLUUID(floater->childGetValue("line_prejump").asString());
|
||||
if(id.notNull()) overrides["7a4e87fe-de39-6fcb-6223-024b00893244"] = id;
|
||||
id = LLUUID(floater->childGetValue("line_falling").asString());
|
||||
if(id.notNull()) overrides["666307d9-a860-572d-6fd4-c3ab8865c094"] = id;
|
||||
id = LLUUID(floater->childGetValue("line_stride").asString());
|
||||
if(id.notNull()) overrides["1cb562b0-ba21-2202-efb3-30f82cdf9595"] = id;
|
||||
id = LLUUID(floater->childGetValue("line_soft_landing").asString());
|
||||
if(id.notNull()) overrides["7a17b059-12b2-41b1-570a-186368b6aa6f"] = id;
|
||||
id = LLUUID(floater->childGetValue("line_medium_landing").asString());
|
||||
if(id.notNull()) overrides["f4f00d6e-b9fe-9292-f4cb-0ae06ea58d57"] = id;
|
||||
id = LLUUID(floater->childGetValue("line_hard_landing").asString());
|
||||
if(id.notNull()) overrides["3da1d753-028a-5446-24f3-9c9b856d9422"] = id;
|
||||
id = LLUUID(floater->childGetValue("line_flying_slow").asString());
|
||||
if(id.notNull()) overrides["2b5a38b2-5e00-3a97-a495-4c826bc443e6"] = id;
|
||||
id = LLUUID(floater->childGetValue("line_sitting_on_ground").asString());
|
||||
if(id.notNull()) overrides["1a2bd58e-87ff-0df8-0b4c-53e047b0bb6e"] = id;
|
||||
for(std::list<LLUUID>::iterator itr = LLAO::mStandOverrides.begin();itr != LLAO::mStandOverrides.end();
|
||||
itr++)
|
||||
{
|
||||
overrides["stands"].append((*itr));
|
||||
}
|
||||
LLSD settings;
|
||||
settings["version"] = 2;
|
||||
settings["overrides"] = overrides;
|
||||
settings["overrides"] = LLAO::mAnimationOverrides;
|
||||
gSavedPerAccountSettings.setLLSD("AO.Settings", settings);
|
||||
LLAO::refresh();
|
||||
floater->refresh();
|
||||
}
|
||||
|
||||
|
||||
//static
|
||||
void LLFloaterAO::onClickStandRemove(void* user_data)
|
||||
void LLFloaterAO::onClickAnimRemove(void* user_data)
|
||||
{
|
||||
LLFloaterAO* floater = (LLFloaterAO*)user_data;
|
||||
LLUUID id = floater->mStandsCombo->getValue().asUUID();
|
||||
std::list<LLUUID>::iterator itr = std::find(LLAO::mStandOverrides.begin(),LLAO::mStandOverrides.end(),id);
|
||||
LLVOAvatar* avatarp = gAgent.getAvatarObject();
|
||||
if(id.notNull() && itr != LLAO::mStandOverrides.end())
|
||||
std::vector<LLScrollListItem*> items = floater->mAnimationList->getAllSelected();
|
||||
for (std::vector<LLScrollListItem*>::iterator iter = items.begin(); iter != items.end(); ++iter)
|
||||
{
|
||||
//back is always last played, front is next
|
||||
avatarp->stopMotion(id);
|
||||
LLAO::mStandOverrides.erase(itr);
|
||||
avatarp->startMotion(LLAO::mStandOverrides.front());
|
||||
LLAO::mStandOverrides.push_back(LLAO::mStandOverrides.front());
|
||||
LLAO::mStandOverrides.pop_front();
|
||||
|
||||
floater->refresh();
|
||||
LLAO::mTimer->reset();
|
||||
LLScrollListItem* item = *iter;
|
||||
if (item->getValue().asString() != "")
|
||||
{
|
||||
std::string anim_name = item->getValue().asString();
|
||||
S32 count = LLAO::mAnimationOverrides[floater->mCurrentAnimType].size();
|
||||
S32 index;
|
||||
LLSD new_list;
|
||||
for (index = 0; index < count; index++)
|
||||
{
|
||||
if (LLAO::mAnimationOverrides[floater->mCurrentAnimType][index].isDefined())
|
||||
{
|
||||
std::string this_anim = LLAO::mAnimationOverrides[floater->mCurrentAnimType][index].asString();
|
||||
if (this_anim != anim_name)
|
||||
{
|
||||
new_list.append(this_anim);
|
||||
}
|
||||
}
|
||||
}
|
||||
LLAO::mAnimationOverrides[floater->mCurrentAnimType] = new_list;
|
||||
}
|
||||
}
|
||||
onCommitAnim(NULL,user_data);
|
||||
}
|
||||
//static
|
||||
void LLFloaterAO::onClickStandAdd(void* user_data)
|
||||
void LLFloaterAO::onClickAnimAdd(void* user_data)
|
||||
{
|
||||
LLFloaterAO* floater = (LLFloaterAO*)user_data;
|
||||
LLUUID id = floater->mStandsCombo->getValue().asUUID();
|
||||
std::list<LLUUID>::iterator itr = std::find(LLAO::mStandOverrides.begin(),LLAO::mStandOverrides.end(),id);
|
||||
LLVOAvatar* avatarp = gAgent.getAvatarObject();
|
||||
if(id.notNull() && itr == LLAO::mStandOverrides.end())
|
||||
std::string anim_name = floater->mAnimListCombo->getSimple();
|
||||
if (anim_name == "")
|
||||
return;
|
||||
LLUUID id(LLAO::getAssetIDByName(anim_name));
|
||||
#ifdef AO_DEBUG
|
||||
llinfos << "Attempting to add " << anim_name << " (" << id << ") " << " to " << floater->mCurrentAnimType << llendl;
|
||||
#endif
|
||||
if(id.notNull() && !LLAO::mAnimationOverrides[floater->mCurrentAnimType].has(anim_name))
|
||||
{
|
||||
//back is always last played
|
||||
avatarp->stopMotion(LLAO::mStandOverrides.back());
|
||||
avatarp->startMotion(id);
|
||||
LLAO::mStandOverrides.push_back(id);
|
||||
|
||||
floater->refresh();
|
||||
#ifdef AO_DEBUG
|
||||
llinfos << "Actually adding animation, this should be refreshed. Count:" << LLAO::mAnimationOverrides[floater->mCurrentAnimType].size() << llendl;
|
||||
#endif
|
||||
LLAO::mAnimationOverrides[floater->mCurrentAnimType].append(anim_name);
|
||||
#ifdef AO_DEBUG
|
||||
llinfos << "Added animation. Count:" << LLAO::mAnimationOverrides[floater->mCurrentAnimType].size() << llendl;
|
||||
#endif
|
||||
LLAO::mTimer->reset();
|
||||
}
|
||||
onCommitAnim(NULL,user_data);
|
||||
@@ -466,5 +515,4 @@ void LLFloaterAO::onClickLoad(void* user_data)
|
||||
xml_file.close();
|
||||
}
|
||||
}
|
||||
|
||||
// </edit>
|
||||
// </edit>
|
||||
@@ -16,6 +16,7 @@ public:
|
||||
void pause();
|
||||
void resume();
|
||||
void reset();
|
||||
|
||||
private:
|
||||
BOOL mPaused;
|
||||
};
|
||||
@@ -25,14 +26,30 @@ class LLAO
|
||||
public:
|
||||
static void setup();
|
||||
static std::map<LLUUID,LLUUID> mOverrides;
|
||||
static std::list<LLUUID> mStandOverrides;
|
||||
static std::list<std::string> mStandOverrides;
|
||||
//Animation LLSD for full animation options -HgB
|
||||
static LLSD mAnimationOverrides;
|
||||
static S32 mAnimationIndex;
|
||||
|
||||
static BOOL isEnabled(){ return mEnabled; }
|
||||
static BOOL isStand(LLUUID _id);
|
||||
static BOOL isVoice(LLUUID _id);
|
||||
static void refresh();
|
||||
static void runAnims(BOOL enabled);
|
||||
static bool handleAOEnabledChanged(const LLSD& newvalue);
|
||||
static bool handleAOPeriodChanged(const LLSD& newvalue);
|
||||
static const LLUUID& getAssetIDByName(const std::string& name);
|
||||
static LLUUID getFrontUUID();
|
||||
static LLUUID getBackUUID();
|
||||
static LLAOStandTimer* mTimer;
|
||||
|
||||
//Horribly hacked-up stuff from llpreviewgesture.h, try to fix in the near future. -HgB
|
||||
/*virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
|
||||
EDragAndDropType cargo_type,
|
||||
void* cargo_data,
|
||||
EAcceptance* accept,
|
||||
std::string& tooltip_msg);*/
|
||||
|
||||
private:
|
||||
static BOOL mEnabled;
|
||||
static F32 mPeriod;
|
||||
@@ -44,19 +61,24 @@ public:
|
||||
static LLFloaterAO* sInstance;
|
||||
static void show();
|
||||
LLFloaterAO();
|
||||
void addAnimations();
|
||||
BOOL postBuild(void);
|
||||
void refresh();
|
||||
static void onCommitAnim(LLUICtrl* ctrl, void* user_data);
|
||||
static void onCommitStands(LLUICtrl* ctrl,void* user_data);
|
||||
static void onClickStandRemove(void* user_data);
|
||||
static void onClickStandAdd(void* user_data);
|
||||
static void onCommitType(LLUICtrl* ctrl,void* user_data);
|
||||
static void onClickAnimRemove(void* user_data);
|
||||
static void onClickAnimAdd(void* user_data);
|
||||
static void onClickSave(void* user_data);
|
||||
static void onClickLoad(void* user_data);
|
||||
|
||||
private:
|
||||
LLComboBox* mAnimListCombo;
|
||||
LLComboBox* mAnimTypeCombo;
|
||||
LLScrollListCtrl* mAnimationList;
|
||||
std::string mCurrentAnimType;
|
||||
virtual ~LLFloaterAO();
|
||||
std::string idstr(LLUUID id); // silly utility
|
||||
public:
|
||||
LLComboBox* mStandsCombo;
|
||||
protected:
|
||||
static void onCommitAnimation(LLUICtrl* ctrl, void* data);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
#include "lluserauth.h"
|
||||
|
||||
#include "llagent.h"
|
||||
#include "llavatarconstants.h" //For new Online check - HgB
|
||||
#include "llfloateravatarpicker.h"
|
||||
#include "llbutton.h"
|
||||
#include "llcheckboxctrl.h"
|
||||
@@ -1477,7 +1478,8 @@ void LLPanelLandObjects::processParcelObjectOwnersReply(LLMessageSystem *msg, vo
|
||||
BOOL is_group_owned;
|
||||
S32 object_count;
|
||||
U32 most_recent_time = 0;
|
||||
BOOL is_online;
|
||||
BOOL is_online = 0;
|
||||
U32 flags = 0x0;
|
||||
std::string object_count_str;
|
||||
//BOOL b_need_refresh = FALSE;
|
||||
|
||||
@@ -1492,13 +1494,16 @@ void LLPanelLandObjects::processParcelObjectOwnersReply(LLMessageSystem *msg, vo
|
||||
std::vector<LLUUID> avatar_ids;
|
||||
std::vector<LLVector3d> positions;
|
||||
LLWorld::instance().getAvatars(&avatar_ids, &positions, mypos, F32_MAX);
|
||||
|
||||
|
||||
for(S32 i = 0; i < rows; ++i)
|
||||
{
|
||||
msg->getUUIDFast(_PREHASH_Data, _PREHASH_OwnerID, owner_id, i);
|
||||
msg->getBOOLFast(_PREHASH_Data, _PREHASH_IsGroupOwned, is_group_owned, i);
|
||||
msg->getS32Fast (_PREHASH_Data, _PREHASH_Count, object_count, i);
|
||||
msg->getBOOLFast(_PREHASH_Data, _PREHASH_OnlineStatus, is_online, i);
|
||||
//Trying a different approach to getting the Online flag. -HgB
|
||||
//msg->getBOOLFast(_PREHASH_Data, _PREHASH_OnlineStatus, is_online, i);
|
||||
msg->getU32Fast(_PREHASH_PropertiesData, _PREHASH_Flags, flags);
|
||||
is_online = (flags & AVATAR_ONLINE);
|
||||
if(msg->has("DataExtended"))
|
||||
{
|
||||
msg->getU32("DataExtended", "TimeStamp", most_recent_time, i);
|
||||
|
||||
@@ -229,9 +229,6 @@ BOOL LLPreviewGesture::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
|
||||
if (item
|
||||
&& gInventory.getItem(item->getUUID()))
|
||||
{
|
||||
// <edit>
|
||||
/*
|
||||
// </edit>
|
||||
LLPermissions perm = item->getPermissions();
|
||||
if (!((perm.getMaskBase() & PERM_ITEM_UNRESTRICTED) == PERM_ITEM_UNRESTRICTED))
|
||||
{
|
||||
@@ -245,10 +242,6 @@ BOOL LLPreviewGesture::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
|
||||
break;
|
||||
}
|
||||
else if (drop)
|
||||
// <edit>
|
||||
*/
|
||||
if(drop)
|
||||
// </edit>
|
||||
{
|
||||
LLScrollListItem* line = NULL;
|
||||
if (cargo_type == DAD_ANIMATION)
|
||||
@@ -628,10 +621,7 @@ void LLPreviewGesture::addAnimations()
|
||||
LLViewerInventoryCategory::cat_array_t cats;
|
||||
LLViewerInventoryItem::item_array_t items;
|
||||
LLIsTypeWithPermissions is_copyable_animation(LLAssetType::AT_ANIMATION,
|
||||
// <edit>
|
||||
// PERM_ITEM_UNRESTRICTED,
|
||||
PERM_NONE,
|
||||
// </edit>
|
||||
PERM_ITEM_UNRESTRICTED,
|
||||
gAgent.getID(),
|
||||
gAgent.getGroupID());
|
||||
gInventory.collectDescendentsIf(gAgent.getInventoryRootID(),
|
||||
|
||||
@@ -1393,6 +1393,9 @@ bool idle_startup()
|
||||
// Overwrite default user settings with user settings
|
||||
LLAppViewer::instance()->loadSettingsFromDirectory("Account");
|
||||
|
||||
//User settings are loaded, get the AO settings - HgB
|
||||
LLAO::refresh();
|
||||
|
||||
// Need to set the LastLogoff time here if we don't have one. LastLogoff is used for "Recent Items" calculation
|
||||
// and startup time is close enough if we don't have a real value.
|
||||
if (gSavedPerAccountSettings.getU32("LastLogoff") == 0)
|
||||
@@ -1430,7 +1433,6 @@ bool idle_startup()
|
||||
LLFile::mkdir(user_windlight_days_path_name.c_str());
|
||||
|
||||
// <edit>
|
||||
LLAO::refresh();
|
||||
LLFloaterBlacklist::loadFromSave();
|
||||
// </edit>
|
||||
|
||||
|
||||
@@ -1062,6 +1062,13 @@ void LLTextureCache::writeEntryAndClose(S32 idx, Entry& entry)
|
||||
if (!mReadOnly)
|
||||
{
|
||||
entry.mTime = time(NULL);
|
||||
if(entry.mImageSize < entry.mBodySize)
|
||||
{
|
||||
// Just say no, due to my messing around to cache discards other than 0 we can end up here
|
||||
// after recalling an image from cache at a lower discard than cached. RC
|
||||
return;
|
||||
}
|
||||
|
||||
llassert_always(entry.mImageSize == 0 || entry.mImageSize == -1 || entry.mImageSize > entry.mBodySize);
|
||||
if (entry.mBodySize > 0)
|
||||
{
|
||||
|
||||
@@ -160,7 +160,7 @@ public:
|
||||
//static void onBtnRevert( void* userdata );
|
||||
static void onBtnWhite( void* userdata );
|
||||
static void onBtnInvisible( void* userdata );
|
||||
static void onBtnNone( void* userdata );
|
||||
static void onBtnAlpha( void* userdata );
|
||||
static void onBtnClear( void* userdata );
|
||||
static void onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action, void* data);
|
||||
static void onShowFolders(LLUICtrl* ctrl, void* userdata);
|
||||
@@ -178,6 +178,7 @@ protected:
|
||||
LLUUID mWhiteImageAssetID;
|
||||
LLUUID mInvisibleImageAssetID;
|
||||
LLUUID mSpecialCurrentImageAssetID; // Used when the asset id has no corresponding texture in the user's inventory.
|
||||
LLUUID mAlphaImageAssetID;
|
||||
LLUUID mOriginalImageAssetID;
|
||||
|
||||
std::string mLabel;
|
||||
@@ -218,6 +219,7 @@ LLFloaterTexturePicker::LLFloaterTexturePicker(
|
||||
mFallbackImageName( fallback_image_name ),
|
||||
mWhiteImageAssetID( gSavedSettings.getString( "UIImgWhiteUUID" ) ),
|
||||
mInvisibleImageAssetID(gSavedSettings.getString("UIImgInvisibleUUID")),
|
||||
mAlphaImageAssetID("8dcd4a48-2d37-4909-9f78-f7a9eb4ef903"),
|
||||
mOriginalImageAssetID(owner->getImageAssetID()),
|
||||
mLabel(label),
|
||||
mTentativeLabel(NULL),
|
||||
@@ -237,7 +239,7 @@ LLFloaterTexturePicker::LLFloaterTexturePicker(
|
||||
|
||||
|
||||
childSetAction("Default",LLFloaterTexturePicker::onBtnSetToDefault,this);
|
||||
childSetAction("None", LLFloaterTexturePicker::onBtnNone,this);
|
||||
childSetAction("Alpha", LLFloaterTexturePicker::onBtnAlpha,this);
|
||||
childSetAction("Blank", LLFloaterTexturePicker::onBtnWhite,this);
|
||||
childSetAction("Invisible", LLFloaterTexturePicker::onBtnInvisible,this);
|
||||
|
||||
@@ -590,7 +592,7 @@ void LLFloaterTexturePicker::draw()
|
||||
childSetEnabled("Default", mImageAssetID != mOwner->getDefaultImageAssetID());
|
||||
childSetEnabled("Blank", mImageAssetID != mWhiteImageAssetID );
|
||||
childSetEnabled("Invisible", mOwner->getAllowInvisibleTexture() && mImageAssetID != mInvisibleImageAssetID );
|
||||
childSetEnabled("None", mOwner->getAllowNoTexture() && !mImageAssetID.isNull() );
|
||||
childSetEnabled("Alpha", mImageAssetID != mAlphaImageAssetID );
|
||||
|
||||
LLFloater::draw();
|
||||
|
||||
@@ -734,10 +736,10 @@ void LLFloaterTexturePicker::onBtnInvisible(void* userdata)
|
||||
|
||||
|
||||
// static
|
||||
void LLFloaterTexturePicker::onBtnNone(void* userdata)
|
||||
void LLFloaterTexturePicker::onBtnAlpha(void* userdata)
|
||||
{
|
||||
LLFloaterTexturePicker* self = (LLFloaterTexturePicker*) userdata;
|
||||
self->setImageID( LLUUID::null );
|
||||
self->setImageID(self->mAlphaImageAssetID);
|
||||
self->commitIfImmediateSet();
|
||||
}
|
||||
|
||||
|
||||
@@ -192,11 +192,9 @@ BOOL LLToolPie::pickAndShowMenu(BOOL always_show)
|
||||
// touch behavior down below...
|
||||
break;
|
||||
case CLICK_ACTION_SIT:
|
||||
if ((gAgent.getAvatarObject() != NULL) && (!gAgent.getAvatarObject()->mIsSitting)) // agent not already sitting
|
||||
if ((gAgent.getAvatarObject() != NULL) && (!gAgent.getAvatarObject()->mIsSitting)
|
||||
&& (!gSavedSettings.getBOOL("DisableClickSit"))) // agent not already sitting
|
||||
{
|
||||
// <edit>
|
||||
if(!gSavedSettings.getBOOL("DisableClickSit"))
|
||||
// </edit>
|
||||
handle_sit_or_stand();
|
||||
// put focus in world when sitting on an object
|
||||
gFocusMgr.setKeyboardFocus(NULL);
|
||||
|
||||
@@ -247,7 +247,6 @@
|
||||
#include "llao.h"
|
||||
#include "llfloatervfs.h"
|
||||
#include "llfloatervfsexplorer.h"
|
||||
#include "llfloaterexportregion.h"
|
||||
// </edit>
|
||||
|
||||
#include "scriptcounter.h"
|
||||
@@ -2947,6 +2946,21 @@ class LLAvatarCopyUUID : public view_listener_t
|
||||
}
|
||||
};
|
||||
|
||||
class LLAvatarClientUUID : public view_listener_t
|
||||
{
|
||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||
{
|
||||
LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getPrimaryObject() );
|
||||
if(!avatar) return true;
|
||||
|
||||
std::string clientID;
|
||||
LLColor4 color;
|
||||
avatar->getClientInfo(clientID, color, false);
|
||||
gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(clientID));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
class LLAvatarEnableFreezeEject : public view_listener_t
|
||||
{
|
||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||
@@ -9789,6 +9803,7 @@ void initialize_menus()
|
||||
addMenu(new LLAvatarEnableAddFriend(), "Avatar.EnableAddFriend");
|
||||
addMenu(new LLAvatarEnableFreezeEject(), "Avatar.EnableFreezeEject");
|
||||
addMenu(new LLAvatarCopyUUID(), "Avatar.CopyUUID");
|
||||
addMenu(new LLAvatarClientUUID(), "Avatar.ClientID");
|
||||
|
||||
// Object pie menu
|
||||
addMenu(new LLObjectOpen(), "Object.Open");
|
||||
|
||||
@@ -3246,7 +3246,7 @@ void LLVOAvatar::idleUpdateWindEffect()
|
||||
bool LLVOAvatar::updateClientTags()
|
||||
{
|
||||
std::string client_list_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "client_definitions.xml");
|
||||
LLSD response = LLHTTPClient::blockingGet("http://ascent.balseraph.org/updates/client_definitions.xml");
|
||||
LLSD response = LLHTTPClient::blockingGet("http://ascentviewer.com/updates/client_definitions.xml");
|
||||
if(response.has("body"))
|
||||
{
|
||||
const LLSD &client_list = response["body"];
|
||||
@@ -5698,13 +5698,37 @@ std::string LLVOAvatar::getIdleTime()
|
||||
BOOL LLVOAvatar::startMotion(const LLUUID& id, F32 time_offset)
|
||||
{
|
||||
LLMemType mt(LLMemType::MTYPE_AVATAR);
|
||||
|
||||
// <edit>
|
||||
if(mIsSelf)
|
||||
{
|
||||
if(LLAO::isEnabled())
|
||||
{
|
||||
if(LLAO::mOverrides.find(id) != LLAO::mOverrides.end())
|
||||
std::string ao_id;
|
||||
if (LLAO::isStand(id))
|
||||
{
|
||||
ao_id = "Stands";
|
||||
}
|
||||
else if (LLAO::isVoice(id))
|
||||
{
|
||||
ao_id = "Voices";
|
||||
}
|
||||
else
|
||||
{
|
||||
ao_id = id.asString();
|
||||
}
|
||||
if (LLAO::mAnimationOverrides[ao_id].size() > 0)
|
||||
{
|
||||
LLAO::mAnimationIndex++;
|
||||
if (LLAO::mAnimationOverrides[ao_id].size() <= LLAO::mAnimationIndex)
|
||||
{
|
||||
LLAO::mAnimationIndex = 0;
|
||||
}
|
||||
LLUUID new_anim = LLAO::getAssetIDByName(LLAO::mAnimationOverrides[ao_id][LLAO::mAnimationIndex]);
|
||||
llinfos << "Switching to anim #" << LLAO::mAnimationIndex << ": " << LLAO::mAnimationOverrides[ao_id][LLAO::mAnimationIndex] << llendl;
|
||||
gAgent.sendAnimationRequest(new_anim, ANIM_REQUEST_START);
|
||||
startMotion(new_anim, time_offset);
|
||||
}
|
||||
/*if(LLAO::mOverrides.find(id) != LLAO::mOverrides.end())
|
||||
{
|
||||
// avoid infinite loops!
|
||||
if( (id != LLAO::mOverrides[id])
|
||||
@@ -5714,7 +5738,7 @@ BOOL LLVOAvatar::startMotion(const LLUUID& id, F32 time_offset)
|
||||
gAgent.sendAnimationRequest(LLAO::mOverrides[id], ANIM_REQUEST_START);
|
||||
startMotion(LLAO::mOverrides[id], time_offset);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
// </edit>
|
||||
@@ -5777,15 +5801,35 @@ BOOL LLVOAvatar::stopMotion(const LLUUID& id, BOOL stop_immediate)
|
||||
{
|
||||
if (mIsSelf)
|
||||
{
|
||||
|
||||
// <edit>
|
||||
if(LLAO::isEnabled())
|
||||
{
|
||||
if( (LLAO::mOverrides.find(id) != LLAO::mOverrides.end())
|
||||
std::string ao_id;
|
||||
if (LLAO::isStand(id))
|
||||
{
|
||||
ao_id = "Stands";
|
||||
}
|
||||
else if (LLAO::isVoice(id))
|
||||
{
|
||||
ao_id = "Voices";
|
||||
}
|
||||
else
|
||||
{
|
||||
ao_id = id.asString();
|
||||
}
|
||||
if (LLAO::mAnimationOverrides[ao_id].size() > 0)
|
||||
{
|
||||
LLUUID new_anim = LLAO::getAssetIDByName(LLAO::mAnimationOverrides[ao_id][LLAO::mAnimationIndex]);
|
||||
gAgent.sendAnimationRequest(new_anim, ANIM_REQUEST_STOP);
|
||||
stopMotion(new_anim, stop_immediate);
|
||||
}
|
||||
/*if( (LLAO::mOverrides.find(id) != LLAO::mOverrides.end())
|
||||
&& (id != LLAO::mOverrides[id]) )
|
||||
{
|
||||
gAgent.sendAnimationRequest(LLAO::mOverrides[id], ANIM_REQUEST_STOP);
|
||||
stopMotion(LLAO::mOverrides[id], stop_immediate);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
// </edit>
|
||||
gAgent.onAnimStop(id);
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
<texture name="spin_down_out_blue.tga" preload="true"/>
|
||||
<texture name="spin_up_in_blue.tga" preload="true"/>
|
||||
<texture name="spin_up_out_blue.tga" preload="true"/>
|
||||
|
||||
<texture name="ff_visible_map.tga" preload="true"/>
|
||||
<texture name="square_btn_32x128.tga" preload="true" scale_left="8" scale_top="10" scale_right="120" scale_bottom="10"/>
|
||||
<texture name="square_btn_selected_32x128.tga" preload="true" scale_left="2" scale_top="10" scale_right="126" scale_bottom="10"/>
|
||||
|
||||
|
||||
@@ -1,114 +1,101 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater can_close="true" can_drag_on_left="false" can_minimize="true" can_resize="false"
|
||||
width="410" height="590"
|
||||
<floater can_close="true" can_drag_on_left="false" can_minimize="true" can_resize="true"
|
||||
width="305" height="590" min_width="275" min_height="400"
|
||||
name="AO Editor" title="AO Editor" rect_control="FloaterAORect">
|
||||
<button bottom="-50" halign="center" height="24" label="Load..." left="220" name="btn_load" width="80" />
|
||||
<button bottom="-50" halign="center" height="24" label="Save..." left_delta="90" name="btn_save" width="80" />
|
||||
<text follows="top|left" height="15" left="10" name="text_stand1" bottom="-80">
|
||||
Stands:
|
||||
<text follows="top|left" height="15" left="10" name="text_stand1" bottom="-40">
|
||||
Action:
|
||||
</text>
|
||||
<combo_box name="combo_stands" max_length="36" allow_text_entry="true" follows="top|left|right" height="20" left="100" width="250" bottom_delta="0">
|
||||
<combo_box name="combo_anim_type" max_length="36" allow_text_entry="true" follows="top||left|right" height="20" left="75" right="-7" bottom_delta="0">
|
||||
<combo_item type="string" length="1" enabled="true" name="Crouch" value="201f3fdf-cb1f-dbec-201f-7333e328ae7c">
|
||||
Crouch
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" enabled="true" name="Crouchwalk" value="47f5f6fb-22e5-ae44-f871-73aaaf4a6022">
|
||||
Crouchwalk
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" enabled="true" name="Fall" value="666307d9-a860-572d-6fd4-c3ab8865c094">
|
||||
Fall
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" enabled="true" name="Fly" value="aec4610c-757f-bc4e-c092-c6e9caf18daf">
|
||||
Fly
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" enabled="true" name="FlyDown" value="20f063ea-8306-2562-0b07-5c853b37b31e">
|
||||
Fly Down
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" enabled="true" name="FlyUp" value="62c5de58-cb33-5743-3d07-9e4cd4352864">
|
||||
Fly Up
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" enabled="true" name="GroundSit" value="1a2bd58e-87ff-0df8-0b4c-53e047b0bb6e">
|
||||
Ground Sit
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" enabled="true" name="Hover" value="4ae8016b-31b9-03bb-c401-b1ea941db41d">
|
||||
Hover
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" enabled="true" name="SoftLand" value="7a17b059-12b2-41b1-570a-186368b6aa6f">
|
||||
Land (Soft)
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" enabled="true" name="MediumLand" value="f4f00d6e-b9fe-9292-f4cb-0ae06ea58d57">
|
||||
Land (Medium)
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" enabled="true" name="HardLand" value="3da1d753-028a-5446-24f3-9c9b856d9422">
|
||||
Land (Hard)
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" enabled="true" name="Jump" value="2305bd75-1ca9-b03b-1faa-b176b8a8c49e">
|
||||
Jump
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" enabled="true" name="PreJump" value="7a4e87fe-de39-6fcb-6223-024b00893244">
|
||||
Pre-Jump
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" enabled="true" name="Run" value="05ddbff8-aaa9-92a1-2b74-8fe77a29b445">
|
||||
Run
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" enabled="true" name="Sit" value="1a5fe8ac-a804-8a5d-7cbd-56bd83184568">
|
||||
Sit
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" enabled="true" name="SlowFly" value="2b5a38b2-5e00-3a97-a495-4c826bc443e6">
|
||||
Slow Fly
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" enabled="true" name="Stand" value="Stands">
|
||||
Stand
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" enabled="true" name="Stride" value="1cb562b0-ba21-2202-efb3-30f82cdf9595">
|
||||
Stride
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" enabled="true" name="TurnLeft" value="56e0ba0d-4a9f-7f27-6117-32f2ebbf6135">
|
||||
Turn Left
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" enabled="true" name="TurnRight" value="2d6daa51-3192-6794-8e2e-a15f8338ec30">
|
||||
Turn Right
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" enabled="true" name="Type" value="c541c47f-e0c0-058b-ad1a-d6ae3a4584d9">
|
||||
Typing
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" enabled="true" name="Voice" value="Voices">
|
||||
Voice
|
||||
</combo_item>
|
||||
<combo_item type="string" length="1" enabled="true" name="Walk" value="6ed24bd8-91aa-4b12-ccc7-c97c857ab4e0">
|
||||
Walk
|
||||
</combo_item>
|
||||
</combo_box>
|
||||
<button bottom_delta="0" height="20" label="✔" left="355" name="combo_stands_add" width="21" />
|
||||
<button bottom_delta="0" height="20" label="X" left="380" name="combo_stands_delete" width="21" />
|
||||
|
||||
<text follows="top|left" height="15" left="10" name="text_walking" bottom_delta="-25">
|
||||
Walking:
|
||||
Animations:
|
||||
</text>
|
||||
<line_editor follows="top|left|right" height="19" max_length="36" name="line_walking"
|
||||
width="300" left="100" bottom_delta="0" />
|
||||
<combo_box name="combo_anim_list" max_length="36" allow_text_entry="true" follows="top|left|right" height="20" left="75" right="-52" bottom_delta="0">
|
||||
</combo_box>
|
||||
<button follows="top|right" bottom_delta="0" height="20" label="✔" right="-29" name="combo_anim_add" width="21" />
|
||||
<button follows="top|right" bottom_delta="0" height="20" label="X" right="-7" name="combo_anim_delete" width="21" />
|
||||
<text follows="top|left" height="15" left="10" name="text_running" bottom_delta="-25">
|
||||
Running:
|
||||
Current List:
|
||||
</text>
|
||||
<line_editor follows="top|left|right" height="19" max_length="36" name="line_running"
|
||||
width="300" left="100" bottom_delta="0" />
|
||||
<text follows="top|left" height="15" left="10" name="text_crouchwalk" bottom_delta="-25">
|
||||
Crouchwalk:
|
||||
</text>
|
||||
<line_editor follows="top|left|right" height="19" max_length="36" name="line_crouchwalk"
|
||||
width="300" left="100" bottom_delta="0" />
|
||||
<text follows="top|left" height="15" left="10" name="text_flying" bottom_delta="-25">
|
||||
Flying:
|
||||
</text>
|
||||
<line_editor follows="top|left|right" height="19" max_length="36" name="line_flying"
|
||||
width="300" left="100" bottom_delta="0" />
|
||||
<text follows="top|left" height="15" left="10" name="text_turn_left" bottom_delta="-25">
|
||||
Turn Left:
|
||||
</text>
|
||||
<line_editor follows="top|left|right" height="19" max_length="36" name="line_turn_left"
|
||||
width="300" left="100" bottom_delta="0" />
|
||||
<text follows="top|left" height="15" left="10" name="text_turn_right" bottom_delta="-25">
|
||||
Turn Right:
|
||||
</text>
|
||||
<line_editor follows="top|left|right" height="19" max_length="36" name="line_turn_right"
|
||||
width="300" left="100" bottom_delta="0" />
|
||||
<text follows="top|left" height="15" left="10" name="text_jumping" bottom_delta="-25">
|
||||
Jumping:
|
||||
</text>
|
||||
<line_editor follows="top|left|right" height="19" max_length="36" name="line_jumping"
|
||||
width="300" left="100" bottom_delta="0" />
|
||||
<text follows="top|left" height="15" left="10" name="text_fly_up" bottom_delta="-25">
|
||||
Fly Up:
|
||||
</text>
|
||||
<line_editor follows="top|left|right" height="19" max_length="36" name="line_fly_up"
|
||||
width="300" left="100" bottom_delta="0" />
|
||||
<text follows="top|left" height="15" left="10" name="text_crouching" bottom_delta="-25">
|
||||
Crouching:
|
||||
</text>
|
||||
<line_editor follows="top|left|right" height="19" max_length="36" name="line_crouching"
|
||||
width="300" left="100" bottom_delta="0" />
|
||||
<text follows="top|left" height="15" left="10" name="text_fly_down" bottom_delta="-25">
|
||||
Fly Down:
|
||||
</text>
|
||||
<line_editor follows="top|left|right" height="19" max_length="36" name="line_fly_down"
|
||||
width="300" left="100" bottom_delta="0" />
|
||||
<text follows="top|left" height="15" left="10" name="text_hover" bottom_delta="-25">
|
||||
Hover:
|
||||
</text>
|
||||
<line_editor follows="top|left|right" height="19" max_length="36" name="line_hover"
|
||||
width="300" left="100" bottom_delta="0" />
|
||||
<text follows="top|left" height="15" left="10" name="text_sitting" bottom_delta="-25">
|
||||
Sitting:
|
||||
</text>
|
||||
<line_editor follows="top|left|right" height="19" max_length="36" name="line_sitting"
|
||||
width="300" left="100" bottom_delta="0" />
|
||||
<text follows="top|left" height="15" left="10" name="text_prejump" bottom_delta="-25">
|
||||
PreJump:
|
||||
</text>
|
||||
<line_editor follows="top|left|right" height="19" max_length="36" name="line_prejump"
|
||||
width="300" left="100" bottom_delta="0" />
|
||||
<text follows="top|left" height="15" left="10" name="text_falling" bottom_delta="-25">
|
||||
Falling:
|
||||
</text>
|
||||
<line_editor follows="top|left|right" height="19" max_length="36" name="line_falling"
|
||||
width="300" left="100" bottom_delta="0" />
|
||||
<text follows="top|left" height="15" left="10" name="text_stride" bottom_delta="-25">
|
||||
Stride:
|
||||
</text>
|
||||
<line_editor follows="top|left|right" height="19" max_length="36" name="line_stride"
|
||||
width="300" left="100" bottom_delta="0" />
|
||||
<text follows="top|left" height="15" left="10" name="text_soft_landing" bottom_delta="-25">
|
||||
Soft Landing:
|
||||
</text>
|
||||
<line_editor follows="top|left|right" height="19" max_length="36" name="line_soft_landing"
|
||||
width="300" left="100" bottom_delta="0" />
|
||||
<text follows="top|left" height="15" left="10" name="text_medium_landing" bottom_delta="-25">
|
||||
Medium Landing:
|
||||
</text>
|
||||
<line_editor follows="top|left|right" height="19" max_length="36" name="line_medium_landing"
|
||||
width="300" left="100" bottom_delta="0" />
|
||||
<text follows="top|left" height="15" left="10" name="text_hard_landing" bottom_delta="-25">
|
||||
Hard Landing:
|
||||
</text>
|
||||
<line_editor follows="top|left|right" height="19" max_length="36" name="line_hard_landing"
|
||||
width="300" left="100" bottom_delta="0" />
|
||||
<text follows="top|left" height="15" left="10" name="text_flying_slow" bottom_delta="-25">
|
||||
Flying Slow:
|
||||
</text>
|
||||
<line_editor follows="top|left|right" height="19" max_length="36" name="line_flying_slow"
|
||||
width="300" left="100" bottom_delta="0" />
|
||||
<text follows="top|left" height="15" left="10" name="text_sitting_on_ground" bottom_delta="-25">
|
||||
Sitting on Ground:
|
||||
</text>
|
||||
<line_editor follows="top|left|right" height="19" max_length="36" name="line_sitting_on_ground"
|
||||
width="300" left="100" bottom_delta="0" />
|
||||
<scroll_list bottom="35" can_resize="true" column_padding="0" draw_heading="true"
|
||||
follows="left|top|bottom|right" left="7" multi_select="true" right="-7"
|
||||
name="active_anim_list" width="280" search_column="1"
|
||||
tool_tip="Hold shift or control while clicking to select multiple files"
|
||||
top="-68">
|
||||
<column dynamicwidth="true" label="Animation" name="anim_name" tool_tip="Name of the animation." />
|
||||
</scroll_list>
|
||||
<button follows="right|bottom" bottom="7" halign="center" height="24" label="Load..."
|
||||
left="120" name="btn_load" width="80" />
|
||||
<button follows="right|bottom" bottom="7" halign="center" height="24" label="Save..."
|
||||
left_delta="90" name="btn_save" width="80" />
|
||||
</floater>
|
||||
|
||||
@@ -42,7 +42,10 @@
|
||||
<on_visible function="Object.VisibleScriptCount" />
|
||||
</menu_item_call>
|
||||
<menu_item_call enabled="true" label="Copy UUID" mouse_opaque="true" name="CopyUUID">
|
||||
<on_click function="Avatar.CopyUUID" />
|
||||
<on_click function="Avatar.CopyUUID" />
|
||||
</menu_item_call>
|
||||
<menu_item_call enabled="false" hidden="false" label="Client ID" mouse_opaque="true" name="ClientID">
|
||||
<on_click function="Avatar.ClientID" />
|
||||
</menu_item_call>
|
||||
<menu_item_call enabled="true" label="Derender" mouse_opaque="true" name="Derender">
|
||||
<on_click function="Object.DERENDER" />
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
<Type region name>
|
||||
</combo_item>
|
||||
</combo_box>
|
||||
<!--<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="45" drop_shadow_visible="true" follows="right|bottom"
|
||||
font="SansSerifSmall" font-style="UNDERLINE" h_pad="0" halign="right" height="16"
|
||||
left="-210" mouse_opaque="true" name="create_new_account_text" v_pad="0" width="200"
|
||||
@@ -100,5 +100,5 @@
|
||||
left="-310" mouse_opaque="true" name="channel_text" v_pad="0" width="300"
|
||||
hover="true" hover_color="50 115 185">
|
||||
[CHANNEL] [VERSION]
|
||||
</text>-->
|
||||
</text>
|
||||
</panel>
|
||||
|
||||
@@ -345,7 +345,7 @@
|
||||
name="AscentCmdLineTP2" control_name="AscentCmdLineTP2" width="200"/>
|
||||
</panel>
|
||||
<panel border="true" left="1" bottom="-408" height="408" width="500" mouse_opaque="true"
|
||||
follows="left|top|right|bottom" label="Privacy" name="Privacy">
|
||||
follows="left|top|right|bottom" label="Security" name="Security">
|
||||
<check_box bottom_delta="-25" control_name="BroadcastViewerEffects" enabled="true"
|
||||
follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
|
||||
label="Broadcast Viewer Effects (Does not include beams)" left="10"
|
||||
@@ -375,6 +375,12 @@
|
||||
tool_tip="Objects generally retain Take Control and Trigger Animation permissions until reset or given permission by another user. Enabling this will make sure you revoke these permissions immediately."
|
||||
mouse_opaque="true" name="revoke_perms_on_stand_up_check" radio_style="false"
|
||||
width="400" />
|
||||
<check_box bottom_delta="-20" control_name="DisableClickSit" enabled="true"
|
||||
follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
|
||||
label="Disable click-to-sit objects" left="10"
|
||||
tool_tip="Some griefer tools rely on forcing or tricking you to click on an object that will make you sit, giving the object automatic permissions to trigger animations amongst other things. This will disable llSitTarget - It does mean that you will need to select 'Sit' on poseballs and furniture."
|
||||
mouse_opaque="true" name="disable_click_sit_check" radio_style="false"
|
||||
width="400" />
|
||||
</panel>
|
||||
<panel border="true" left="1" bottom="-408" height="408" width="500" mouse_opaque="true"
|
||||
follows="left|top|right|bottom" label="Building" name="Building">
|
||||
|
||||
Reference in New Issue
Block a user