Merge branch 'master' of github.com:Beeks/Ascent
This commit is contained in:
@@ -78,5 +78,4 @@ Build Window:
|
||||
* Copy/Paste Primitive Parameters buttons
|
||||
|
||||
Known issues:
|
||||
Online/Total counts in the friends list sometimes go haywire. Not often or by a large margin, but it happens.
|
||||
Skin menu doesn't work - On hold until we actually have some skins to show - Ascent will have its own "branded" skin at some point.
|
||||
Online/Total counts in the friends list sometimes go haywire. Not often or by a large margin, but it happens.
|
||||
@@ -64,6 +64,7 @@ include_directories(
|
||||
)
|
||||
|
||||
set(viewer_SOURCE_FILES
|
||||
ascentuploadbrowser.cpp
|
||||
dhparam.cpp
|
||||
dsaparam.cpp
|
||||
emerald.cpp
|
||||
@@ -512,7 +513,7 @@ endif (LINUX)
|
||||
set(viewer_HEADER_FILES
|
||||
CMakeLists.txt
|
||||
ViewerInstall.cmake
|
||||
|
||||
ascentuploadbrowser.h
|
||||
emerald.h
|
||||
emeraldboobutils.h
|
||||
dofloaterhex.h
|
||||
|
||||
@@ -101,7 +101,6 @@
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<!-- Expanded Settings that have optionally Account-Specific alternatives -->
|
||||
<key>BroadcastViewerEffects</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
@@ -113,95 +112,130 @@
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>AscentDisableLogoutScreens</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Disable logout screen progress bar</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>AscentDisableTeleportScreens</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Disable teleport screens</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>EmeraldUseProperArc</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Enables/Disables a fixed ARC counter</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>EmeraldBoobMass</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Mass of boobs.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>54.0</real>
|
||||
</map>
|
||||
<key>EmeraldBoobHardness</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Hardness (dampening) of boobs.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>51</real>
|
||||
</map>
|
||||
<key>EmeraldBreastPhysicsToggle</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Enables/Disables breast physics</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>EmeraldBreastSportsBra</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>allows disabling the physics for 1 av, in case their outfit looks wrong with it on</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>EmeraldBoobVelMax</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Max amount of velocity boobs can have</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>64</real>
|
||||
</map>
|
||||
<key>EmeraldBoobFriction</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Internal friction (brings boobs to rest). Shouldn't ever be above 1.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>80</real>
|
||||
</map>
|
||||
<key>EmeraldBoobVelMin</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Friction Fraction of FPS (used to keep friction uniform through FPS change).</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>24</real>
|
||||
</map>
|
||||
<key>EmeraldBoobXYInfluence</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Amount of influence along the X and Y planes.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>0.1</real>
|
||||
</map>
|
||||
<!-- Expanded Settings that have optionally Account-Specific alternatives -->
|
||||
|
||||
<!-- Ascent-Specific Settings -->
|
||||
<key>EmeraldBoobMass</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Mass of boobs.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>54.0</real>
|
||||
</map>
|
||||
<key>EmeraldBoobHardness</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Hardness (dampening) of boobs.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>51</real>
|
||||
</map>
|
||||
<key>EmeraldBreastPhysicsToggle</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Enables/Disables breast physics</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>EmeraldBreastSportsBra</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>allows disabling the physics for 1 av, in case their outfit looks wrong with it on</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>EmeraldBoobVelMax</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Max amount of velocity boobs can have</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>64</real>
|
||||
</map>
|
||||
<key>EmeraldBoobFriction</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Internal friction (brings boobs to rest). Shouldn't ever be above 1.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>80</real>
|
||||
</map>
|
||||
<key>EmeraldBoobVelMin</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Friction Fraction of FPS (used to keep friction uniform through FPS change).</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>24</real>
|
||||
</map>
|
||||
<key>EmeraldBoobXYInfluence</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Amount of influence along the X and Y planes.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>0.1</real>
|
||||
</map>
|
||||
<key>AscentCmdLine</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
@@ -301,7 +335,7 @@
|
||||
<key>Value</key>
|
||||
<string>mapto</string>
|
||||
</map>
|
||||
<key>AscentCmdLineMapToKeepPos</key>
|
||||
<key>AscentMapToKeepPos</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Attempt to arrive in the same location you were at.</string>
|
||||
@@ -13611,7 +13645,7 @@
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>FloaterDickDongsRect</key>
|
||||
<key>FloaterUploadRect</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Rectangle for DicksDongs</string>
|
||||
@@ -13622,11 +13656,10 @@
|
||||
<string>Rect</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<integer>200</integer>
|
||||
|
||||
<integer>250</integer>
|
||||
<integer>250</integer>
|
||||
<integer>200</integer>
|
||||
<integer>500</integer>
|
||||
<integer>450</integer>
|
||||
<integer>850</integer>
|
||||
<integer>400</integer>
|
||||
</array>
|
||||
</map>
|
||||
<key>FloaterHexRect</key>
|
||||
|
||||
@@ -36,11 +36,13 @@
|
||||
#include "ascentprefssys.h"
|
||||
#include "llcolorswatch.h"
|
||||
#include "llvoavatar.h"
|
||||
#include "llhudeffectlookat.h"
|
||||
#include "llagent.h"
|
||||
#include "llstartup.h"
|
||||
#include "llviewercontrol.h"
|
||||
#include "lluictrlfactory.h"
|
||||
#include "llcombobox.h"
|
||||
#include "llradiogroup.h"
|
||||
#include "llwind.h"
|
||||
#include "llviewernetwork.h"
|
||||
#include "pipeline.h"
|
||||
@@ -86,6 +88,7 @@ private:
|
||||
BOOL mBroadcastViewerEffects;
|
||||
BOOL mDisablePointAtAndBeam;
|
||||
BOOL mPrivateLookAt;
|
||||
BOOL mShowLookAt;
|
||||
BOOL mRevokePermsOnStandUp;
|
||||
};
|
||||
|
||||
@@ -121,6 +124,10 @@ void LLPrefsAscentSysImpl::onCommitCheckBox(LLUICtrl* ctrl, void* user_data)
|
||||
self->childDisable("speed_rez_seconds");
|
||||
}
|
||||
}
|
||||
else if (ctrl->getControlName() == "ShowLookAt")
|
||||
{
|
||||
LLHUDEffectLookAt::sDebugLookAt = self->childGetValue("show_look_at_check").asBoolean();
|
||||
}
|
||||
}
|
||||
|
||||
void LLPrefsAscentSysImpl::refreshValues()
|
||||
@@ -155,6 +162,7 @@ void LLPrefsAscentSysImpl::refreshValues()
|
||||
mBroadcastViewerEffects = gSavedSettings.getBOOL("BroadcastViewerEffects");
|
||||
mDisablePointAtAndBeam = gSavedSettings.getBOOL("DisablePointAtAndBeam");
|
||||
mPrivateLookAt = gSavedSettings.getBOOL("PrivateLookAt");
|
||||
mShowLookAt = LLHUDEffectLookAt::sDebugLookAt;
|
||||
mRevokePermsOnStandUp = gSavedSettings.getBOOL("RevokePermsOnStandUp");
|
||||
}
|
||||
|
||||
@@ -174,33 +182,9 @@ void LLPrefsAscentSysImpl::refresh()
|
||||
childSetValue("seconds_in_chat_and_ims_check", mSecondsInChatAndIMs);
|
||||
childSetValue("allow_mu_pose_check", mEnableMUPose);
|
||||
childSetValue("close_ooc_check", mEnableOOCAutoClose);
|
||||
//Show Links
|
||||
//Time Format
|
||||
//Date Format
|
||||
childSetValue("seconds_in_chat_and_ims_check", mEnableOOCAutoClose);
|
||||
//Save Performance --------------------------------------------------------------------
|
||||
childSetValue("fetch_inventory_on_login_check", mFetchInventoryOnLogin);
|
||||
childSetValue("enable_wind", mEnableLLWind);
|
||||
childSetValue("enable_clouds", mEnableClouds);
|
||||
childSetValue("speed_rez_check", mSpeedRez);
|
||||
if (mSpeedRez)
|
||||
{
|
||||
childEnable("speed_rez_interval");
|
||||
childEnable("speed_rez_seconds");
|
||||
}
|
||||
else
|
||||
{
|
||||
childDisable("speed_rez_interval");
|
||||
childDisable("speed_rez_seconds");
|
||||
}
|
||||
//Command Line ------------------------------------------------------------------------
|
||||
|
||||
//Privacy -----------------------------------------------------------------------------
|
||||
childSetValue("broadcast_viewer_effects", mBroadcastViewerEffects);
|
||||
childSetValue("disable_point_at_and_beams_check", mDisablePointAtAndBeam);
|
||||
childSetValue("private_look_at_check", mPrivateLookAt);
|
||||
childSetValue("revoke_perms_on_stand_up_check", mRevokePermsOnStandUp);
|
||||
|
||||
LLRadioGroup* radioLinkOptions = getChild<LLRadioGroup>("objects_link");
|
||||
radioLinkOptions->selectNthItem(mLinksForChattingObjects);
|
||||
//childSetValue("objects_link", mLinksForChattingObjects);
|
||||
std::string format = gSavedSettings.getString("ShortTimeFormat");
|
||||
if (format.find("%p") == -1)
|
||||
{
|
||||
@@ -238,6 +222,31 @@ void LLPrefsAscentSysImpl::refresh()
|
||||
{
|
||||
combo->setCurrentByIndex(mDateFormat);
|
||||
}
|
||||
|
||||
childSetValue("seconds_in_chat_and_ims_check", mEnableOOCAutoClose);
|
||||
//Save Performance --------------------------------------------------------------------
|
||||
childSetValue("fetch_inventory_on_login_check", mFetchInventoryOnLogin);
|
||||
childSetValue("enable_wind", mEnableLLWind);
|
||||
childSetValue("enable_clouds", mEnableClouds);
|
||||
childSetValue("speed_rez_check", mSpeedRez);
|
||||
if (mSpeedRez)
|
||||
{
|
||||
childEnable("speed_rez_interval");
|
||||
childEnable("speed_rez_seconds");
|
||||
}
|
||||
else
|
||||
{
|
||||
childDisable("speed_rez_interval");
|
||||
childDisable("speed_rez_seconds");
|
||||
}
|
||||
//Command Line ------------------------------------------------------------------------
|
||||
|
||||
//Privacy -----------------------------------------------------------------------------
|
||||
childSetValue("broadcast_viewer_effects", mBroadcastViewerEffects);
|
||||
childSetValue("disable_point_at_and_beams_check", mDisablePointAtAndBeam);
|
||||
childSetValue("private_look_at_check", mPrivateLookAt);
|
||||
childSetValue("show_look_at_check", mShowLookAt);
|
||||
childSetValue("revoke_perms_on_stand_up_check", mRevokePermsOnStandUp);
|
||||
}
|
||||
|
||||
void LLPrefsAscentSysImpl::cancel()
|
||||
@@ -304,7 +313,7 @@ void LLPrefsAscentSysImpl::apply()
|
||||
gSavedSettings.setBOOL("AscentHideTypingNotification", childGetValue("hide_typing_check"));
|
||||
gSavedSettings.setBOOL("AscentAllowMUpose", childGetValue("allow_mu_pose_check"));
|
||||
gSavedSettings.setBOOL("AscentAutoCloseOOC", childGetValue("close_ooc_check"));
|
||||
gSavedSettings.setU32("LinksForChattingObjects", childGetValue("objects_link").asInteger());
|
||||
//gSavedSettings.setU32("LinksForChattingObjects", childGetValue("objects_link"). );
|
||||
|
||||
LLComboBox* combo = getChild<LLComboBox>("time_format_combobox");
|
||||
if (combo) {
|
||||
@@ -379,15 +388,16 @@ void LLPrefsAscentSysImpl::apply()
|
||||
gSavedSettings.setString("AscentCmdTeleportToCam", childGetValue("AscentCmdTeleportToCam"));
|
||||
gSavedSettings.setString("AscentCmdLineKeyToName", childGetValue("AscentCmdLineKeyToName"));
|
||||
gSavedSettings.setString("AscentCmdLineOfferTp", childGetValue("AscentCmdLineOfferTp"));
|
||||
gSavedSettings.setString("AscentCmdLineMapTo", childGetValue("AscentCmdLineMapTo"));
|
||||
gSavedSettings.setBOOL("AscentCmdLineMapToKeepPos", childGetValue("AscentCmdLineMapToKeepPos"));
|
||||
gSavedSettings.setString("AscentCmdLineTP2", childGetValue("AscentCmdLineTP2"));
|
||||
gSavedSettings.setString("AscentCmdLineMapTo", childGetValue("AscentCmdLineMapTo"));
|
||||
gSavedSettings.setBOOL("AscentMapToKeepPos", childGetValue("AscentMapToKeepPos"));
|
||||
gSavedSettings.setString("AscentCmdLineTP2", childGetValue("AscentCmdLineTP2"));
|
||||
|
||||
|
||||
//Privacy --------------------------------------------------------------------------------
|
||||
gSavedSettings.setBOOL("BroadcastViewerEffects", childGetValue("broadcast_viewer_effects"));
|
||||
gSavedSettings.setBOOL("DisablePointAtAndBeam", childGetValue("disable_point_at_and_beams_check"));
|
||||
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"));
|
||||
|
||||
refreshValues();
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -44,7 +44,7 @@
|
||||
//this is really the only thing that needs to be here atm
|
||||
LLFloaterDickDongs::LLFloaterDickDongs(const LLSD& seed)
|
||||
{
|
||||
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_dickdongs.xml");
|
||||
//LLUICtrlFactory::getInstance()->buildFloater(this, "floater_dickdongs.xml");
|
||||
}
|
||||
|
||||
//Not needed yet
|
||||
|
||||
@@ -2646,10 +2646,10 @@ bool idle_startup()
|
||||
LLFloaterActiveSpeakers::showInstance();
|
||||
}
|
||||
|
||||
if (gSavedSettings.getBOOL("BeaconAlwaysOn"))
|
||||
/*if (gSavedSettings.getBOOL("BeaconAlwaysOn"))
|
||||
{
|
||||
LLFloaterBeacons::showInstance();
|
||||
}
|
||||
LLFloaterBeacons::showInstance(); DIE
|
||||
}*/
|
||||
|
||||
if (!gSavedSettings.getBOOL("CloudsEnabled") && !gNoRender)
|
||||
{
|
||||
|
||||
@@ -112,7 +112,8 @@
|
||||
#include "llfloaterchat.h"
|
||||
#include "llfloatercustomize.h"
|
||||
#include "llfloaterdaycycle.h"
|
||||
#include "llfloaterdickdongs.h"
|
||||
//#include "llfloaterdickdongs.h" No need for the custom floater right now, I think. -HgB
|
||||
#include "ascentuploadbrowser.h" //New customer floater attempts
|
||||
#include "llfloaterdirectory.h"
|
||||
#include "llfloatereditui.h"
|
||||
#include "llfloaterchatterbox.h"
|
||||
@@ -6110,17 +6111,17 @@ class LLShowFloater : public view_listener_t
|
||||
{
|
||||
LLFloaterActiveSpeakers::toggleInstance(LLSD());
|
||||
}
|
||||
else if (floater_name == "beacons")
|
||||
/*else if (floater_name == "beacons")
|
||||
{
|
||||
LLFloaterBeacons::toggleInstance(LLSD());
|
||||
}
|
||||
LLFloaterBeacons::toggleInstance(LLSD()); NO
|
||||
}*/
|
||||
else if (floater_name == "perm prefs")
|
||||
{
|
||||
LLFloaterPerms::toggleInstance(LLSD());
|
||||
}
|
||||
else if (floater_name == "dickdongs")
|
||||
else if (floater_name == "ascentuploadbrowser")
|
||||
{
|
||||
LLFloaterDickDongs::toggleInstance(LLSD());
|
||||
ASFloaterUploadBrowser::show(NULL);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -6177,14 +6178,14 @@ class LLFloaterVisible : public view_listener_t
|
||||
{
|
||||
new_value = LLFloaterActiveSpeakers::instanceVisible(LLSD());
|
||||
}
|
||||
else if (floater_name == "beacons")
|
||||
/*else if (floater_name == "beacons")
|
||||
{
|
||||
new_value = LLFloaterBeacons::instanceVisible(LLSD());
|
||||
new_value = LLFloaterBeacons::instanceVisible(LLSD()); Oh man fuck this floater so much.
|
||||
}
|
||||
else if (floater_name == "dickdongs")
|
||||
{
|
||||
new_value = LLFloaterDickDongs::instanceVisible(LLSD());
|
||||
}
|
||||
new_value = LLFloaterDickDongs::instanceVisible(LLSD()); Not needed any more.
|
||||
}*/
|
||||
else if (floater_name == "inventory")
|
||||
{
|
||||
LLInventoryView* iv = LLInventoryView::getActiveInventory();
|
||||
|
||||
@@ -86,8 +86,7 @@
|
||||
#include "llvoiceclient.h"
|
||||
#include "llvoicevisualizer.h" // Ventrella
|
||||
|
||||
|
||||
#include "llsdserialize.h"
|
||||
#include "llsdserialize.h" //For the client definitions
|
||||
// <edit>
|
||||
#include "llfloaterexploreanimations.h"
|
||||
#include "llao.h"
|
||||
@@ -710,6 +709,9 @@ BOOL LLVOAvatar::sJointDebug = FALSE;
|
||||
|
||||
EmeraldGlobalBoobConfig LLVOAvatar::sBoobConfig;
|
||||
|
||||
F32 LLVOAvatar::sAvMorphTime = 0.65f;
|
||||
|
||||
|
||||
F32 LLVOAvatar::sUnbakedTime = 0.f;
|
||||
F32 LLVOAvatar::sUnbakedUpdateTime = 0.f;
|
||||
F32 LLVOAvatar::sGreyTime = 0.f;
|
||||
@@ -1020,7 +1022,7 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
|
||||
//VTPause(); // VTune
|
||||
|
||||
mVoiceVisualizer->setVoiceEnabled( gVoiceClient->getVoiceEnabled( mID ) );
|
||||
mCurrentGesticulationLevel = 0;
|
||||
mCurrentGesticulationLevel = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -1186,45 +1188,45 @@ void LLVOAvatar::dumpScratchTextureByteCount()
|
||||
llinfos << "Scratch Texture GL: " << (sScratchTexBytes/1024) << "KB" << llendl;
|
||||
}
|
||||
|
||||
// static
|
||||
void LLVOAvatar::getMeshInfo (mesh_info_t* mesh_info)
|
||||
{
|
||||
if (!mesh_info) return;
|
||||
|
||||
LLVOAvatarXmlInfo::mesh_info_list_t::iterator iter = sAvatarXmlInfo->mMeshInfoList.begin();
|
||||
LLVOAvatarXmlInfo::mesh_info_list_t::iterator end = sAvatarXmlInfo->mMeshInfoList.end();
|
||||
|
||||
for (; iter != end; ++iter)
|
||||
{
|
||||
LLVOAvatarXmlInfo::LLVOAvatarMeshInfo* avatar_info = (*iter);
|
||||
std::string type = avatar_info->mType;
|
||||
S32 lod = avatar_info->mLOD;
|
||||
std::string file = avatar_info->mMeshFileName;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
mesh_info_t::iterator iter_info = mesh_info->find(type);
|
||||
if(iter_info == mesh_info->end())
|
||||
{
|
||||
lod_mesh_map_t lod_mesh;
|
||||
lod_mesh.insert(std::pair<S32,std::string>(lod, file));
|
||||
mesh_info->insert(std::pair<std::string,lod_mesh_map_t>(type, lod_mesh));
|
||||
}
|
||||
else
|
||||
{
|
||||
lod_mesh_map_t& lod_mesh = iter_info->second;
|
||||
lod_mesh_map_t::iterator iter_lod = lod_mesh.find(lod);
|
||||
if (iter_lod == lod_mesh.end())
|
||||
{
|
||||
lod_mesh.insert(std::pair<S32,std::string>(lod, file));
|
||||
}
|
||||
else
|
||||
{
|
||||
// Should never happen
|
||||
llwarns << "Duplicate mesh LOD " << type << " " << lod << " " << file << llendl;
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// static
|
||||
@@ -1399,9 +1401,9 @@ if(gAuditTexture)
|
||||
}
|
||||
LLTexLayerSet::sHasCaches = FALSE;
|
||||
}
|
||||
|
||||
for( LLGLuint* namep = sScratchTexNames.getFirstData();
|
||||
namep;
|
||||
|
||||
for( LLGLuint* namep = sScratchTexNames.getFirstData();
|
||||
namep;
|
||||
namep = sScratchTexNames.getNextData() )
|
||||
{
|
||||
LLImageGL::deleteTextures(1, (U32 *)namep );
|
||||
@@ -1427,7 +1429,7 @@ if(gAuditTexture)
|
||||
// LLVOAvatar::initClass()
|
||||
//------------------------------------------------------------------------
|
||||
void LLVOAvatar::initClass()
|
||||
{
|
||||
{
|
||||
std::string xmlFile;
|
||||
|
||||
xmlFile = gDirUtilp->getExpandedFilename(LL_PATH_CHARACTER,AVATAR_DEFAULT_CHAR) + "_lad.xml";
|
||||
@@ -1439,7 +1441,7 @@ void LLVOAvatar::initClass()
|
||||
|
||||
// now sanity check xml file
|
||||
LLXmlTreeNode* root = sXMLTree.getRoot();
|
||||
if (!root)
|
||||
if (!root)
|
||||
{
|
||||
llerrs << "No root node found in avatar configuration file: " << xmlFile << llendl;
|
||||
return;
|
||||
@@ -1601,7 +1603,7 @@ void LLVOAvatar::getSpatialExtents(LLVector3& newMin, LLVector3& newMax)
|
||||
LLPolyMesh* mesh = i->second;
|
||||
for (S32 joint_num = 0; joint_num < mesh->mJointRenderData.count(); joint_num++)
|
||||
{
|
||||
update_min_max(newMin, newMax,
|
||||
update_min_max(newMin, newMax,
|
||||
mesh->mJointRenderData[joint_num]->mWorldMatrix->getTranslation());
|
||||
}
|
||||
}
|
||||
@@ -1609,7 +1611,7 @@ void LLVOAvatar::getSpatialExtents(LLVector3& newMin, LLVector3& newMax)
|
||||
mPixelArea = LLPipeline::calcPixelArea((newMin+newMax)*0.5f, (newMax-newMin)*0.5f, *LLViewerCamera::getInstance());
|
||||
|
||||
//stretch bounding box by attachments
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
iter != mAttachmentPoints.end();
|
||||
++iter)
|
||||
{
|
||||
@@ -1633,9 +1635,9 @@ void LLVOAvatar::getSpatialExtents(LLVector3& newMin, LLVector3& newMax)
|
||||
LLVector3 distance = (ext[1] - ext[0]);
|
||||
|
||||
// Only add the prim to spatial extents calculations if it isn't a megaprim.
|
||||
// max_attachment_span calculated at the start of the function
|
||||
// (currently 5 times our max prim size)
|
||||
if (distance.mV[0] < max_attachment_span
|
||||
// max_attachment_span calculated at the start of the function
|
||||
// (currently 5 times our max prim size)
|
||||
if (distance.mV[0] < max_attachment_span
|
||||
&& distance.mV[1] < max_attachment_span
|
||||
&& distance.mV[2] < max_attachment_span)
|
||||
{
|
||||
@@ -1764,7 +1766,7 @@ BOOL LLVOAvatar::parseSkeletonFile(const std::string& filename)
|
||||
|
||||
// now sanity check xml file
|
||||
LLXmlTreeNode* root = sSkeletonXMLTree.getRoot();
|
||||
if (!root)
|
||||
if (!root)
|
||||
{
|
||||
llerrs << "No root node found in avatar skeleton file: " << filename << llendl;
|
||||
}
|
||||
@@ -2023,7 +2025,7 @@ void LLVOAvatar::buildCharacter()
|
||||
//-------------------------------------------------------------------------
|
||||
// Make sure "well known" pointers exist
|
||||
//-------------------------------------------------------------------------
|
||||
if (!(mPelvisp &&
|
||||
if (!(mPelvisp &&
|
||||
mTorsop &&
|
||||
mChestp &&
|
||||
mNeckp &&
|
||||
@@ -2119,7 +2121,7 @@ void LLVOAvatar::buildCharacter()
|
||||
else
|
||||
{
|
||||
BOOL attachment_found = FALSE;
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
iter != mAttachmentPoints.end(); )
|
||||
{
|
||||
attachment_map_t::iterator curiter = iter++;
|
||||
@@ -2127,6 +2129,8 @@ void LLVOAvatar::buildCharacter()
|
||||
if (attachment->getGroup() == i)
|
||||
{
|
||||
LLMenuItemCallGL* item;
|
||||
|
||||
|
||||
item = new LLMenuItemCallGL(attachment->getName(),
|
||||
NULL,
|
||||
object_selected_and_point_valid);
|
||||
@@ -2159,14 +2163,14 @@ void LLVOAvatar::buildCharacter()
|
||||
else
|
||||
{
|
||||
BOOL attachment_found = FALSE;
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
iter != mAttachmentPoints.end(); )
|
||||
{
|
||||
attachment_map_t::iterator curiter = iter++;
|
||||
LLViewerJointAttachment* attachment = curiter->second;
|
||||
if (attachment->getGroup() == i)
|
||||
{
|
||||
gDetachPieMenu->append(new LLMenuItemCallGL(attachment->getName(),
|
||||
gDetachPieMenu->append(new LLMenuItemCallGL(attachment->getName(),
|
||||
&handle_detach_from_avatar, object_attached, attachment));
|
||||
|
||||
attachment_found = TRUE;
|
||||
@@ -2182,7 +2186,7 @@ void LLVOAvatar::buildCharacter()
|
||||
}
|
||||
|
||||
// add screen attachments
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
iter != mAttachmentPoints.end(); )
|
||||
{
|
||||
attachment_map_t::iterator curiter = iter++;
|
||||
@@ -2190,12 +2194,14 @@ void LLVOAvatar::buildCharacter()
|
||||
if (attachment->getGroup() == 8)
|
||||
{
|
||||
LLMenuItemCallGL* item;
|
||||
item = new LLMenuItemCallGL(attachment->getName(),
|
||||
NULL,
|
||||
|
||||
|
||||
item = new LLMenuItemCallGL(attachment->getName(),
|
||||
NULL,
|
||||
object_selected_and_point_valid);
|
||||
item->addListener(gMenuHolder->getListenerByName("Object.AttachToAvatar"), "on_click", curiter->first);
|
||||
gAttachScreenPieMenu->append(item);
|
||||
gDetachScreenPieMenu->append(new LLMenuItemCallGL(attachment->getName(),
|
||||
gDetachScreenPieMenu->append(new LLMenuItemCallGL(attachment->getName(),
|
||||
&handle_detach_from_avatar, object_attached, attachment));
|
||||
}
|
||||
}
|
||||
@@ -2208,7 +2214,7 @@ void LLVOAvatar::buildCharacter()
|
||||
|
||||
for (S32 pass = 0; pass < 2; pass++)
|
||||
{
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
iter != mAttachmentPoints.end(); )
|
||||
{
|
||||
attachment_map_t::iterator curiter = iter++;
|
||||
@@ -2218,13 +2224,13 @@ void LLVOAvatar::buildCharacter()
|
||||
continue;
|
||||
}
|
||||
|
||||
LLMenuItemCallGL* item = new LLMenuItemCallGL(attachment->getName(),
|
||||
LLMenuItemCallGL* item = new LLMenuItemCallGL(attachment->getName(),
|
||||
NULL, &object_selected_and_point_valid,
|
||||
&attach_label, attachment);
|
||||
item->addListener(gMenuHolder->getListenerByName("Object.AttachToAvatar"), "on_click", curiter->first);
|
||||
gAttachSubMenu->append(item);
|
||||
|
||||
gDetachSubMenu->append(new LLMenuItemCallGL(attachment->getName(),
|
||||
gDetachSubMenu->append(new LLMenuItemCallGL(attachment->getName(),
|
||||
&handle_detach_from_avatar, object_attached, &detach_label, attachment));
|
||||
|
||||
}
|
||||
@@ -2247,7 +2253,7 @@ void LLVOAvatar::buildCharacter()
|
||||
std::multimap<S32, S32> attachment_pie_menu_map;
|
||||
|
||||
// gather up all attachment points assigned to this group, and throw into map sorted by pie slice number
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
iter != mAttachmentPoints.end(); )
|
||||
{
|
||||
attachment_map_t::iterator curiter = iter++;
|
||||
@@ -2279,14 +2285,14 @@ void LLVOAvatar::buildCharacter()
|
||||
{
|
||||
|
||||
|
||||
LLMenuItemCallGL* item = new LLMenuItemCallGL(attachment->getName(),
|
||||
LLMenuItemCallGL* item = new LLMenuItemCallGL(attachment->getName(),
|
||||
NULL, object_selected_and_point_valid);
|
||||
|
||||
|
||||
|
||||
gAttachBodyPartPieMenus[group]->append(item);
|
||||
item->addListener(gMenuHolder->getListenerByName("Object.AttachToAvatar"), "on_click", attach_index);
|
||||
gDetachBodyPartPieMenus[group]->append(new LLMenuItemCallGL(attachment->getName(),
|
||||
gDetachBodyPartPieMenus[group]->append(new LLMenuItemCallGL(attachment->getName(),
|
||||
&handle_detach_from_avatar,
|
||||
object_attached, attachment));
|
||||
cur_pie_slice++;
|
||||
@@ -2332,8 +2338,8 @@ void LLVOAvatar::releaseMeshData()
|
||||
facep->setSize(0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
iter != mAttachmentPoints.end(); )
|
||||
{
|
||||
attachment_map_t::iterator curiter = iter++;
|
||||
@@ -2363,7 +2369,7 @@ void LLVOAvatar::restoreMeshData()
|
||||
}
|
||||
else
|
||||
{
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
iter != mAttachmentPoints.end(); )
|
||||
{
|
||||
attachment_map_t::iterator curiter = iter++;
|
||||
@@ -2415,12 +2421,12 @@ void LLVOAvatar::updateMeshData()
|
||||
if(last_v_num > 0)//put the last inserted part into next vertex buffer.
|
||||
{
|
||||
num_vertices = last_v_num ;
|
||||
num_indices = last_i_num ;
|
||||
num_indices = last_i_num ;
|
||||
part_index-- ;
|
||||
}
|
||||
|
||||
LLFace* facep ;
|
||||
if(f_num < mDrawable->getNumFaces())
|
||||
if(f_num < mDrawable->getNumFaces())
|
||||
{
|
||||
facep = mDrawable->getFace(f_num);
|
||||
}
|
||||
@@ -2477,7 +2483,7 @@ void LLVOAvatar::updateMeshData()
|
||||
//------------------------------------------------------------------------
|
||||
// The viewer can only suggest a good size for the agent,
|
||||
// the simulator will keep it inside a reasonable range.
|
||||
void LLVOAvatar::computeBodySize()
|
||||
void LLVOAvatar::computeBodySize()
|
||||
{
|
||||
LLVector3 pelvis_scale = mPelvisp->getScale();
|
||||
|
||||
@@ -2517,11 +2523,11 @@ void LLVOAvatar::computeBodySize()
|
||||
mBodySize.mV[VZ] = mPelvisToFoot +
|
||||
// the sqrt(2) correction below is an approximate
|
||||
// correction to get to the top of the head
|
||||
F_SQRT2 * (skull.mV[VZ] * head_scale.mV[VZ]) +
|
||||
head.mV[VZ] * neck_scale.mV[VZ] +
|
||||
neck.mV[VZ] * chest_scale.mV[VZ] +
|
||||
chest.mV[VZ] * torso_scale.mV[VZ] +
|
||||
torso.mV[VZ] * pelvis_scale.mV[VZ];
|
||||
F_SQRT2 * (skull.mV[VZ] * head_scale.mV[VZ]) +
|
||||
head.mV[VZ] * neck_scale.mV[VZ] +
|
||||
neck.mV[VZ] * chest_scale.mV[VZ] +
|
||||
chest.mV[VZ] * torso_scale.mV[VZ] +
|
||||
torso.mV[VZ] * pelvis_scale.mV[VZ];
|
||||
|
||||
// TODO -- measure the real depth and width
|
||||
mBodySize.mV[VX] = DEFAULT_AGENT_DEPTH;
|
||||
@@ -2644,7 +2650,7 @@ BOOL LLVOAvatar::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
|
||||
|
||||
// force asynchronous drawable update
|
||||
if(mDrawable.notNull() && !gNoRender)
|
||||
{
|
||||
{
|
||||
LLFastTimer t(LLFastTimer::FTM_JOINT_UPDATE);
|
||||
|
||||
if (mIsSitting && getParent())
|
||||
@@ -2664,7 +2670,7 @@ BOOL LLVOAvatar::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
gPipeline.updateMoveDampedAsync(mDrawable);
|
||||
}
|
||||
@@ -2739,7 +2745,7 @@ void LLVOAvatar::idleUpdateVoiceVisualizer(bool voice_enabled)
|
||||
// disable voice visualizer when in mouselook
|
||||
mVoiceVisualizer->setVoiceEnabled( voice_enabled && !(mIsSelf && gAgent.cameraMouselook()) );
|
||||
if ( voice_enabled )
|
||||
{
|
||||
{
|
||||
//----------------------------------------------------------------
|
||||
// Only do gesture triggering for your own avatar, and only when you're in a proximal channel.
|
||||
//----------------------------------------------------------------
|
||||
@@ -2779,7 +2785,7 @@ void LLVOAvatar::idleUpdateVoiceVisualizer(bool voice_enabled)
|
||||
// "away", so that the avatar doesn't lapse into away-mode (and slump over) while the user is still talking.
|
||||
//-----------------------------------------------------------------------------------------------------------------
|
||||
if ( gVoiceClient->getIsSpeaking( mID ) )
|
||||
{
|
||||
{
|
||||
if ( ! mVoiceVisualizer->getCurrentlySpeaking() )
|
||||
{
|
||||
mVoiceVisualizer->setStartSpeaking();
|
||||
@@ -2821,7 +2827,7 @@ void LLVOAvatar::idleUpdateVoiceVisualizer(bool voice_enabled)
|
||||
mVoiceVisualizer->setVoiceSourceWorldPosition( mRoot.getWorldPosition() + headOffset );
|
||||
|
||||
}//if ( voiceEnabled )
|
||||
}
|
||||
}
|
||||
|
||||
void LLVOAvatar::idleUpdateMisc(bool detailed_update)
|
||||
{
|
||||
@@ -2845,14 +2851,14 @@ void LLVOAvatar::idleUpdateMisc(bool detailed_update)
|
||||
if (detailed_update || !sUseImpostors)
|
||||
{
|
||||
LLFastTimer t(LLFastTimer::FTM_ATTACHMENT_UPDATE);
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
iter != mAttachmentPoints.end(); )
|
||||
{
|
||||
attachment_map_t::iterator curiter = iter++;
|
||||
LLViewerJointAttachment* attachment = curiter->second;
|
||||
LLViewerObject *attached_object = attachment->getObject();
|
||||
|
||||
BOOL visibleAttachment = visible || (attached_object &&
|
||||
BOOL visibleAttachment = visible || (attached_object &&
|
||||
!(attached_object->mDrawable->getSpatialBridge() &&
|
||||
attached_object->mDrawable->getSpatialBridge()->getRadius() < 2.0));
|
||||
|
||||
@@ -2873,7 +2879,7 @@ void LLVOAvatar::idleUpdateMisc(bool detailed_update)
|
||||
{
|
||||
gPipeline.updateMoveNormalAsync(bridge);
|
||||
}
|
||||
attached_object->updateText();
|
||||
attached_object->updateText();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2937,10 +2943,10 @@ void LLVOAvatar::idleUpdateAppearanceAnimation()
|
||||
{
|
||||
ESex avatar_sex = getSex();
|
||||
F32 appearance_anim_time = mAppearanceMorphTimer.getElapsedTimeF32();
|
||||
if (appearance_anim_time >= APPEARANCE_MORPH_TIME)
|
||||
if (appearance_anim_time >= sAvMorphTime)
|
||||
{
|
||||
mAppearanceAnimating = FALSE;
|
||||
for (LLVisualParam *param = getFirstVisualParam();
|
||||
for (LLVisualParam *param = getFirstVisualParam();
|
||||
param;
|
||||
param = getNextVisualParam())
|
||||
{
|
||||
@@ -2958,15 +2964,15 @@ void LLVOAvatar::idleUpdateAppearanceAnimation()
|
||||
}
|
||||
else
|
||||
{
|
||||
F32 blend_frac = calc_bouncy_animation(appearance_anim_time / APPEARANCE_MORPH_TIME);
|
||||
F32 last_blend_frac = calc_bouncy_animation(mLastAppearanceBlendTime / APPEARANCE_MORPH_TIME);
|
||||
F32 blend_frac = calc_bouncy_animation(appearance_anim_time / sAvMorphTime);
|
||||
F32 last_blend_frac = calc_bouncy_animation(mLastAppearanceBlendTime / sAvMorphTime);
|
||||
F32 morph_amt;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// if it's over 5 seconds, just forget the bouncy anim
|
||||
if(sAvMorphTime > 5.f)
|
||||
{
|
||||
blend_frac = appearance_anim_time / sAvMorphTime;
|
||||
last_blend_frac = mLastAppearanceBlendTime / sAvMorphTime;
|
||||
}
|
||||
if (last_blend_frac == 1.f)
|
||||
{
|
||||
morph_amt = 1.f;
|
||||
@@ -3027,7 +3033,6 @@ void LLVOAvatar::idleUpdateBoobEffect()
|
||||
|
||||
|
||||
EmeraldBoobState newBoobState = EmeraldBoobUtils::idleUpdate(sBoobConfig, mLocalBoobConfig, mBoobState, boobInputs);
|
||||
|
||||
if(mBoobState.boobGrav != newBoobState.boobGrav)
|
||||
{
|
||||
LLVisualParam *param;
|
||||
@@ -3179,7 +3184,7 @@ void LLVOAvatar::idleUpdateLoadingEffect()
|
||||
setParticleSource(particle_parameters, getID());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LLVOAvatar::idleUpdateWindEffect()
|
||||
@@ -3225,7 +3230,7 @@ void LLVOAvatar::idleUpdateWindEffect()
|
||||
mWindVec = lerp(mWindVec, wind, interp);
|
||||
|
||||
F32 wind_freq = hover_strength + llclamp(8.f + (speed * 0.7f) + (noise1(mRipplePhase) * 4.f), 8.f, 25.f);
|
||||
mWindFreq = lerp(mWindFreq, wind_freq, interp);
|
||||
mWindFreq = lerp(mWindFreq, wind_freq, interp);
|
||||
|
||||
if (mBelowWater)
|
||||
{
|
||||
@@ -3440,7 +3445,8 @@ void LLVOAvatar::getClientInfo(std::string& client, LLColor4& color, BOOL useCom
|
||||
color = LLColor4(0.5f, 0.0f, 0.0f);
|
||||
client = "Unknown";
|
||||
}
|
||||
else if (LLVOAvatar::sClientResolutionList.has("isComplete") && LLVOAvatar::sClientResolutionList.has(uuid_str)) {
|
||||
else if (LLVOAvatar::sClientResolutionList.has("isComplete") && LLVOAvatar::sClientResolutionList.has(uuid_str))
|
||||
{
|
||||
LLSD cllsd = LLVOAvatar::sClientResolutionList[uuid_str];
|
||||
client = cllsd["name"].asString();
|
||||
LLColor4 colour;
|
||||
@@ -3499,6 +3505,43 @@ void LLVOAvatar::getClientInfo(std::string& client, LLColor4& color, BOOL useCom
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
LLColor4 LLVOAvatar::getTagColorByUUID(std::string uuid_str)
|
||||
{
|
||||
if (uuid_str == "0bcd5f5d-a4ce-9ea4-f9e8-15132653b3d8")
|
||||
@@ -5631,7 +5674,7 @@ void LLVOAvatar::processAnimationStateChanges()
|
||||
|
||||
stop_glerror();
|
||||
}
|
||||
//Here's that undeform function I was talking about. -HGB
|
||||
//Here's that undeform function I was talking about. -HgB
|
||||
/* Bug-fixed Linden Labs style. Comment out 4ever.
|
||||
std::string undeformers[] =
|
||||
{
|
||||
@@ -6196,7 +6239,7 @@ BOOL LLVOAvatar::allocateCollisionVolumes( U32 num )
|
||||
//-----------------------------------------------------------------------------
|
||||
LLJoint *LLVOAvatar::getCharacterJoint( U32 num )
|
||||
{
|
||||
if ((S32)num >= mNumJoints
|
||||
if ((S32)num >= mNumJoints
|
||||
|| (S32)num < 0)
|
||||
{
|
||||
return NULL;
|
||||
@@ -6412,7 +6455,7 @@ BOOL LLVOAvatar::loadSkeletonNode ()
|
||||
else
|
||||
{
|
||||
addVisualParam(param);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6500,7 +6543,7 @@ BOOL LLVOAvatar::loadSkeletonNode ()
|
||||
BOOL LLVOAvatar::loadMeshNodes()
|
||||
{
|
||||
for (LLVOAvatarXmlInfo::mesh_info_list_t::const_iterator meshinfo_iter = sAvatarXmlInfo->mMeshInfoList.begin();
|
||||
meshinfo_iter != sAvatarXmlInfo->mMeshInfoList.end();
|
||||
meshinfo_iter != sAvatarXmlInfo->mMeshInfoList.end();
|
||||
meshinfo_iter++)
|
||||
{
|
||||
const LLVOAvatarXmlInfo::LLVOAvatarMeshInfo *info = *meshinfo_iter;
|
||||
@@ -6541,7 +6584,7 @@ BOOL LLVOAvatar::loadMeshNodes()
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
llwarns << "Ignoring unrecognized mesh type: " << type << llendl;
|
||||
return FALSE;
|
||||
@@ -6588,7 +6631,7 @@ BOOL LLVOAvatar::loadMeshNodes()
|
||||
mesh->setLOD( info->mMinPixelArea );
|
||||
|
||||
for (LLVOAvatarXmlInfo::LLVOAvatarMeshInfo::morph_info_list_t::const_iterator xmlinfo_iter = info->mPolyMorphTargetInfoList.begin();
|
||||
xmlinfo_iter != info->mPolyMorphTargetInfoList.end();
|
||||
xmlinfo_iter != info->mPolyMorphTargetInfoList.end();
|
||||
xmlinfo_iter++)
|
||||
{
|
||||
const LLVOAvatarXmlInfo::LLVOAvatarMeshInfo::morph_info_pair_t *info_pair = &(*xmlinfo_iter);
|
||||
@@ -6608,7 +6651,7 @@ BOOL LLVOAvatar::loadMeshNodes()
|
||||
{
|
||||
addVisualParam(param);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6825,7 +6868,7 @@ void LLVOAvatar::updateShadowFaces()
|
||||
LLVector3 joint_world_pos = mFootLeftp->getWorldPosition();
|
||||
// this only does a ray straight down from the foot, as our client-side ray-tracing is very limited now
|
||||
// but we make an explicit ray trace call in expectation of future improvements
|
||||
resolveRayCollisionAgent(gAgent.getPosGlobalFromAgent(joint_world_pos),
|
||||
resolveRayCollisionAgent(gAgent.getPosGlobalFromAgent(joint_world_pos),
|
||||
gAgent.getPosGlobalFromAgent(gSky.getSunDirection() + joint_world_pos), shadow_pos, normal);
|
||||
shadow_pos_agent = gAgent.getPosAgentFromGlobal(shadow_pos);
|
||||
foot_height = joint_world_pos.mV[VZ] - shadow_pos_agent.mV[VZ];
|
||||
@@ -6858,7 +6901,7 @@ void LLVOAvatar::updateShadowFaces()
|
||||
LLVector3 joint_world_pos = mFootRightp->getWorldPosition();
|
||||
// this only does a ray straight down from the foot, as our client-side ray-tracing is very limited now
|
||||
// but we make an explicit ray trace call in expectation of future improvements
|
||||
resolveRayCollisionAgent(gAgent.getPosGlobalFromAgent(joint_world_pos),
|
||||
resolveRayCollisionAgent(gAgent.getPosGlobalFromAgent(joint_world_pos),
|
||||
gAgent.getPosGlobalFromAgent(gSky.getSunDirection() + joint_world_pos), shadow_pos, normal);
|
||||
shadow_pos_agent = gAgent.getPosAgentFromGlobal(shadow_pos);
|
||||
foot_height = joint_world_pos.mV[VZ] - shadow_pos_agent.mV[VZ];
|
||||
@@ -6915,22 +6958,6 @@ void LLVOAvatar::hideSkirt()
|
||||
mMeshLOD[MESH_ID_SKIRT]->setVisible(FALSE, TRUE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// requestLayerSetUpdate()
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -7090,7 +7117,7 @@ void LLVOAvatar::lazyAttach()
|
||||
|
||||
void LLVOAvatar::resetHUDAttachments()
|
||||
{
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
iter != mAttachmentPoints.end(); )
|
||||
{
|
||||
attachment_map_t::iterator curiter = iter++;
|
||||
@@ -7111,7 +7138,7 @@ void LLVOAvatar::resetHUDAttachments()
|
||||
//-----------------------------------------------------------------------------
|
||||
BOOL LLVOAvatar::detachObject(LLViewerObject *viewer_object)
|
||||
{
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
iter != mAttachmentPoints.end(); )
|
||||
{
|
||||
attachment_map_t::iterator curiter = iter++;
|
||||
@@ -7284,7 +7311,7 @@ void LLVOAvatar::getOffObject()
|
||||
|
||||
LLViewerObject* sit_object = (LLViewerObject*)getParent();
|
||||
|
||||
if (sit_object)
|
||||
if (sit_object)
|
||||
{
|
||||
stopMotionFromSource(sit_object->getID());
|
||||
LLFollowCamMgr::setCameraActive(sit_object->getID(), FALSE);
|
||||
@@ -7306,7 +7333,7 @@ void LLVOAvatar::getOffObject()
|
||||
|
||||
// set *local* position based on last *world* position, since we're unparenting the avatar
|
||||
mDrawable->mXform.setPosition(cur_position_world);
|
||||
mDrawable->mXform.setRotation(cur_rotation_world);
|
||||
mDrawable->mXform.setRotation(cur_rotation_world);
|
||||
|
||||
gPipeline.markMoved(mDrawable, TRUE);
|
||||
|
||||
@@ -7386,7 +7413,7 @@ LLVOAvatar* LLVOAvatar::findAvatarFromAttachment( LLViewerObject* obj )
|
||||
//-----------------------------------------------------------------------------
|
||||
BOOL LLVOAvatar::isWearingAttachment( const LLUUID& inv_item_id )
|
||||
{
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
iter != mAttachmentPoints.end(); )
|
||||
{
|
||||
attachment_map_t::iterator curiter = iter++;
|
||||
@@ -7417,7 +7444,7 @@ BOOL LLVOAvatar::isWearingUnsupportedAttachment( const LLUUID& inv_item_id )
|
||||
//-----------------------------------------------------------------------------
|
||||
LLViewerObject* LLVOAvatar::getWornAttachment( const LLUUID& inv_item_id )
|
||||
{
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
iter != mAttachmentPoints.end(); )
|
||||
{
|
||||
attachment_map_t::iterator curiter = iter++;
|
||||
@@ -7432,7 +7459,7 @@ LLViewerObject* LLVOAvatar::getWornAttachment( const LLUUID& inv_item_id )
|
||||
|
||||
const std::string LLVOAvatar::getAttachedPointName(const LLUUID& inv_item_id)
|
||||
{
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
iter != mAttachmentPoints.end(); )
|
||||
{
|
||||
attachment_map_t::iterator curiter = iter++;
|
||||
@@ -7528,7 +7555,7 @@ void LLVOAvatar::updateComposites()
|
||||
{
|
||||
for (U32 i = 0; i < mBakedTextureData.size(); i++)
|
||||
{
|
||||
if ( mBakedTextureData[i].mTexLayerSet
|
||||
if ( mBakedTextureData[i].mTexLayerSet
|
||||
&& ((i != BAKED_SKIRT) || isWearingWearableType( WT_SKIRT )) )
|
||||
{
|
||||
mBakedTextureData[i].mTexLayerSet->updateComposite();
|
||||
@@ -8017,7 +8044,7 @@ LLGLuint LLVOAvatar::getScratchTexName( LLGLenum format, U32* texture_bytes )
|
||||
stop_glerror();
|
||||
|
||||
LLImageGL::setManualImage(
|
||||
GL_TEXTURE_2D, 0, internal_format,
|
||||
GL_TEXTURE_2D, 0, internal_format,
|
||||
SCRATCH_TEX_WIDTH, SCRATCH_TEX_HEIGHT,
|
||||
format, GL_UNSIGNED_BYTE, NULL );
|
||||
stop_glerror();
|
||||
@@ -8137,9 +8164,9 @@ void LLVOAvatar::updateMeshTextures()
|
||||
// When an avatar is changing clothes and not in Appearance mode,
|
||||
// use the last-known good baked texture until it finish the first
|
||||
// render of the new layerset.
|
||||
use_lkg_baked_layer[i] = (!is_layer_baked[i]
|
||||
&& (mBakedTextureData[i].mLastTextureIndex != IMG_DEFAULT_AVATAR)
|
||||
&& mBakedTextureData[i].mTexLayerSet
|
||||
use_lkg_baked_layer[i] = (!is_layer_baked[i]
|
||||
&& (mBakedTextureData[i].mLastTextureIndex != IMG_DEFAULT_AVATAR)
|
||||
&& mBakedTextureData[i].mTexLayerSet
|
||||
&& !mBakedTextureData[i].mTexLayerSet->getComposite()->isInitialized());
|
||||
if (use_lkg_baked_layer[i])
|
||||
{
|
||||
@@ -8148,7 +8175,7 @@ void LLVOAvatar::updateMeshTextures()
|
||||
}
|
||||
else
|
||||
{
|
||||
use_lkg_baked_layer[i] = (!is_layer_baked[i]
|
||||
use_lkg_baked_layer[i] = (!is_layer_baked[i]
|
||||
&& mBakedTextureData[i].mLastTextureIndex != IMG_DEFAULT_AVATAR);
|
||||
if (mBakedTextureData[i].mTexLayerSet)
|
||||
{
|
||||
@@ -8192,7 +8219,7 @@ void LLVOAvatar::updateMeshTextures()
|
||||
mBakedTextureData[i].mIsLoaded = FALSE;
|
||||
if ((baked_img->getID() != IMG_INVISIBLE) && (i == BAKED_HEAD || i == BAKED_UPPER || i == BAKED_LOWER))
|
||||
{
|
||||
baked_img->setLoadedCallback(onBakedTextureMasksLoaded, MORPH_MASK_REQUESTED_DISCARD, TRUE, TRUE, new LLTextureMaskData( mID ));
|
||||
baked_img->setLoadedCallback(onBakedTextureMasksLoaded, MORPH_MASK_REQUESTED_DISCARD, TRUE, TRUE, new LLTextureMaskData( mID ));
|
||||
}
|
||||
baked_img->setLoadedCallback(onBakedTextureLoaded, SWITCH_TO_BAKED_DISCARD, FALSE, FALSE, new LLUUID( mID ) );
|
||||
}
|
||||
@@ -8203,7 +8230,7 @@ void LLVOAvatar::updateMeshTextures()
|
||||
{
|
||||
mBakedTextureData[i].mTexLayerSet->createComposite();
|
||||
mBakedTextureData[i].mTexLayerSet->setUpdatesEnabled( TRUE );
|
||||
mBakedTextureData[i].mIsUsed = FALSE;
|
||||
mBakedTextureData[i].mIsUsed = FALSE;
|
||||
for (U32 k=0; k < mBakedTextureData[i].mMeshes.size(); k++)
|
||||
{
|
||||
mBakedTextureData[i].mMeshes[k]->setLayerSet( mBakedTextureData[i].mTexLayerSet );
|
||||
@@ -8224,8 +8251,8 @@ void LLVOAvatar::updateMeshTextures()
|
||||
mBakedTextureData[BAKED_HAIR].mMeshes[i]->setTexture( hair_img );
|
||||
}
|
||||
mHasBakedHair = FALSE;
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
mHasBakedHair = TRUE;
|
||||
}
|
||||
@@ -8460,7 +8487,7 @@ ETextureIndex LLVOAvatar::getBakedTE( LLTexLayerSet* layerset )
|
||||
void LLVOAvatar::setNewBakedTexture( ETextureIndex te, const LLUUID& uuid )
|
||||
{
|
||||
// Baked textures live on other sims.
|
||||
LLHost target_host = getObjectHost();
|
||||
LLHost target_host = getObjectHost();
|
||||
setTEImage( te, gImageList.getImageFromHost( uuid, target_host ) );
|
||||
if (uuid != IMG_INVISIBLE)
|
||||
{
|
||||
@@ -8574,8 +8601,8 @@ void LLVOAvatar::releaseUnnecessaryTextures()
|
||||
//-----------------------------------------------------------------------------
|
||||
void LLVOAvatar::onCustomizeStart()
|
||||
{
|
||||
// We're no longer doing any baking or invalidating on entering
|
||||
// appearance editing mode. Leaving function in place in case
|
||||
// We're no longer doing any baking or invalidating on entering
|
||||
// appearance editing mode. Leaving function in place in case
|
||||
// further changes require us to do something at this point - Nyx
|
||||
}
|
||||
|
||||
@@ -8706,7 +8733,7 @@ LLColor4 LLVOAvatar::getClothesColor( ETextureIndex te )
|
||||
|
||||
|
||||
void LLVOAvatar::dumpAvatarTEs( const std::string& context )
|
||||
{
|
||||
{
|
||||
/* const char* te_name[] = {
|
||||
"TEX_HEAD_BODYPAINT ",
|
||||
"TEX_UPPER_SHIRT ", */
|
||||
@@ -8749,7 +8776,7 @@ void LLVOAvatar::dumpAvatarTEs( const std::string& context )
|
||||
//-----------------------------------------------------------------------------
|
||||
void LLVOAvatar::updateAttachmentVisibility(U32 camera_mode)
|
||||
{
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
iter != mAttachmentPoints.end(); )
|
||||
{
|
||||
attachment_map_t::iterator curiter = iter++;
|
||||
@@ -8930,7 +8957,7 @@ void LLVOAvatar::wearableUpdated(EWearableType type, BOOL upload_result)
|
||||
invalidateComposite(mBakedTextureData[index].mTexLayerSet, upload_result);
|
||||
updateMeshTextures();
|
||||
}
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8947,7 +8974,7 @@ void LLVOAvatar::clampAttachmentPositions()
|
||||
{
|
||||
return;
|
||||
}
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
iter != mAttachmentPoints.end(); )
|
||||
{
|
||||
attachment_map_t::iterator curiter = iter++;
|
||||
@@ -8961,7 +8988,7 @@ void LLVOAvatar::clampAttachmentPositions()
|
||||
|
||||
BOOL LLVOAvatar::hasHUDAttachment() const
|
||||
{
|
||||
for (attachment_map_t::const_iterator iter = mAttachmentPoints.begin();
|
||||
for (attachment_map_t::const_iterator iter = mAttachmentPoints.begin();
|
||||
iter != mAttachmentPoints.end(); )
|
||||
{
|
||||
attachment_map_t::const_iterator curiter = iter++;
|
||||
@@ -8977,7 +9004,7 @@ BOOL LLVOAvatar::hasHUDAttachment() const
|
||||
LLBBox LLVOAvatar::getHUDBBox() const
|
||||
{
|
||||
LLBBox bbox;
|
||||
for (attachment_map_t::const_iterator iter = mAttachmentPoints.begin();
|
||||
for (attachment_map_t::const_iterator iter = mAttachmentPoints.begin();
|
||||
iter != mAttachmentPoints.end(); )
|
||||
{
|
||||
attachment_map_t::const_iterator curiter = iter++;
|
||||
@@ -9082,7 +9109,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
|
||||
// prevent the overwriting of valid baked textures with invalid baked textures
|
||||
for (U8 baked_index = 0; baked_index < mBakedTextureData.size(); baked_index++)
|
||||
{
|
||||
if (!isTextureDefined(mBakedTextureData[baked_index].mTextureIndex)
|
||||
if (!isTextureDefined(mBakedTextureData[baked_index].mTextureIndex)
|
||||
&& mBakedTextureData[baked_index].mLastTextureIndex != IMG_DEFAULT
|
||||
&& baked_index != BAKED_SKIRT)
|
||||
{
|
||||
@@ -9148,22 +9175,22 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
|
||||
mesgsys->getU8Fast(_PREHASH_VisualParam, _PREHASH_ParamValue, value, i);
|
||||
F32 newWeight = U8_to_F32(value, param->getMinWeight(), param->getMaxWeight());
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if(param->getID() == 507 && newWeight != getActualBoobGrav())
|
||||
{
|
||||
llwarns << "Boob Grav SET to " << newWeight << " for " << getFullname() << llendl;
|
||||
setActualBoobGrav(newWeight);
|
||||
}
|
||||
/*if(param->getID() == 795 && newWeight != getActualButtGrav())
|
||||
{
|
||||
llwarns << "Butt Grav SET to " << newWeight << " for " << getFullname() << llendl;
|
||||
setActualButtGrav(newWeight);
|
||||
}
|
||||
if(param->getID() == 157 && newWeight != getActualFatGrav())
|
||||
{
|
||||
llwarns << "Fat Grav SET to " << newWeight << " for " << getFullname() << llendl;
|
||||
setActualFatGrav(newWeight);
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
if (is_first_appearance_message || (param->getWeight() != newWeight))
|
||||
@@ -9206,7 +9233,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
|
||||
if( old_sex != new_sex )
|
||||
{
|
||||
updateSexDependentLayerSets( FALSE );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -9282,7 +9309,7 @@ void LLVOAvatar::onBakedTextureMasksLoaded( BOOL success, LLViewerImage *src_vi,
|
||||
stop_glerror();
|
||||
|
||||
LLImageGL::setManualImage(
|
||||
GL_TEXTURE_2D, 0, GL_ALPHA8,
|
||||
GL_TEXTURE_2D, 0, GL_ALPHA8,
|
||||
aux_src->getWidth(), aux_src->getHeight(),
|
||||
GL_ALPHA, GL_UNSIGNED_BYTE, aux_src->getData());
|
||||
stop_glerror();
|
||||
@@ -9462,7 +9489,7 @@ void LLVOAvatar::dumpArchetypeXML( void* )
|
||||
for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() )
|
||||
{
|
||||
LLViewerVisualParam* viewer_param = (LLViewerVisualParam*)param;
|
||||
if( (viewer_param->getWearableType() == type) &&
|
||||
if( (viewer_param->getWearableType() == type) &&
|
||||
(viewer_param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) )
|
||||
{
|
||||
apr_file_printf( file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\"/>\n",
|
||||
@@ -9551,7 +9578,7 @@ void LLVOAvatar::cullAvatarsByPixelArea()
|
||||
{
|
||||
culled = FALSE;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
culled = TRUE;
|
||||
}
|
||||
@@ -9717,7 +9744,7 @@ void LLVOAvatar::dumpLocalTextures()
|
||||
|
||||
llinfos << "LocTex " << name << ": "
|
||||
<< "Discard " << image->getDiscardLevel() << ", "
|
||||
<< "(" << image->getWidth() << ", " << image->getHeight() << ") "
|
||||
<< "(" << image->getWidth() << ", " << image->getHeight() << ") "
|
||||
#if !LL_RELEASE_FOR_DOWNLOAD
|
||||
// End users don't get to trivially see avatar texture IDs,
|
||||
// makes textures easier to steal
|
||||
@@ -9747,7 +9774,7 @@ void LLVOAvatar::startAppearanceAnimation(BOOL set_by_user, BOOL play_sound)
|
||||
|
||||
|
||||
void LLVOAvatar::removeMissingBakedTextures()
|
||||
{
|
||||
{
|
||||
if (!mIsSelf) return;
|
||||
|
||||
BOOL removed = FALSE;
|
||||
@@ -9785,13 +9812,13 @@ LLVOAvatarXmlInfo::LLVOAvatarXmlInfo()
|
||||
LLVOAvatarXmlInfo::~LLVOAvatarXmlInfo()
|
||||
{
|
||||
std::for_each(mMeshInfoList.begin(), mMeshInfoList.end(), DeletePointer());
|
||||
std::for_each(mSkeletalDistortionInfoList.begin(), mSkeletalDistortionInfoList.end(), DeletePointer());
|
||||
std::for_each(mSkeletalDistortionInfoList.begin(), mSkeletalDistortionInfoList.end(), DeletePointer());
|
||||
std::for_each(mAttachmentInfoList.begin(), mAttachmentInfoList.end(), DeletePointer());
|
||||
delete mTexSkinColorInfo;
|
||||
delete mTexHairColorInfo;
|
||||
delete mTexEyeColorInfo;
|
||||
std::for_each(mLayerInfoList.begin(), mLayerInfoList.end(), DeletePointer());
|
||||
std::for_each(mDriverInfoList.begin(), mDriverInfoList.end(), DeletePointer());
|
||||
std::for_each(mLayerInfoList.begin(), mLayerInfoList.end(), DeletePointer());
|
||||
std::for_each(mDriverInfoList.begin(), mDriverInfoList.end(), DeletePointer());
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -10249,8 +10276,8 @@ std::string LLVOAvatar::getFullname() const
|
||||
{
|
||||
std::string name;
|
||||
|
||||
LLNameValue* first = getNVPair("FirstName");
|
||||
LLNameValue* last = getNVPair("LastName");
|
||||
LLNameValue* first = getNVPair("FirstName");
|
||||
LLNameValue* last = getNVPair("LastName");
|
||||
if (first && last)
|
||||
{
|
||||
name += first->getString();
|
||||
@@ -10338,7 +10365,7 @@ U32 LLVOAvatar::getPartitionType() const
|
||||
}
|
||||
|
||||
//static
|
||||
void LLVOAvatar::updateImpostors()
|
||||
void LLVOAvatar::updateImpostors()
|
||||
{
|
||||
for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin();
|
||||
iter != LLCharacter::sInstances.end(); ++iter)
|
||||
@@ -10409,7 +10436,7 @@ void LLVOAvatar::idleUpdateRenderCost()
|
||||
std::set<LLUUID> textures;
|
||||
|
||||
attachment_map_t::const_iterator iter;
|
||||
for (iter = mAttachmentPoints.begin();
|
||||
for (iter = mAttachmentPoints.begin();
|
||||
iter != mAttachmentPoints.end();
|
||||
++iter)
|
||||
{
|
||||
|
||||
@@ -374,10 +374,10 @@ public:
|
||||
void setLocTexTE( U8 te, LLViewerImage* image, BOOL set_by_user );
|
||||
void setupComposites();
|
||||
|
||||
typedef std::map<S32,std::string> lod_mesh_map_t;
|
||||
typedef std::map<std::string,lod_mesh_map_t> mesh_info_t;
|
||||
|
||||
|
||||
|
||||
|
||||
static void getMeshInfo (mesh_info_t* mesh_info);
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Handling partially loaded avatars (Ruth)
|
||||
@@ -608,7 +608,7 @@ public:
|
||||
static F32 sLODFactor; // user-settable LOD factor
|
||||
static BOOL sJointDebug; // output total number of joints being touched for each avatar
|
||||
static BOOL sDebugAvatarRotation;
|
||||
|
||||
static F32 sAvMorphTime;
|
||||
|
||||
static S32 sNumVisibleAvatars; // Number of instances of this class
|
||||
|
||||
|
||||
@@ -556,9 +556,54 @@ BOOL LLWearable::isDirty()
|
||||
weight = llclamp( weight, param->getMinWeight(), param->getMaxWeight() );
|
||||
|
||||
U8 a = F32_to_U8( param->getWeight(), param->getMinWeight(), param->getMaxWeight() );
|
||||
U8 b = F32_to_U8( weight, param->getMinWeight(), param->getMaxWeight() );
|
||||
|
||||
if(avatar->getAppearanceFlag() == true)
|
||||
{
|
||||
//boob
|
||||
if(param->getID() == 507)
|
||||
{
|
||||
weight = get_if_there(mVisualParamMap, param->getID(), avatar->getActualBoobGrav());
|
||||
weight = llclamp( weight, param->getMinWeight(), param->getMaxWeight() );
|
||||
}
|
||||
/*//butt
|
||||
if(param->getID() == 795)
|
||||
{
|
||||
weight = get_if_there(mVisualParamMap, param->getID(), avatar->getActualButtGrav());
|
||||
weight = llclamp( weight, param->getMinWeight(), param->getMaxWeight() );
|
||||
}
|
||||
//fat
|
||||
if(param->getID() == 157)
|
||||
{
|
||||
weight = get_if_there(mVisualParamMap, param->getID(), avatar->getActualFatGrav());
|
||||
weight = llclamp( weight, param->getMinWeight(), param->getMaxWeight() );
|
||||
}
|
||||
*/
|
||||
}
|
||||
else
|
||||
{
|
||||
//boob
|
||||
if(param->getID() == 507)
|
||||
{
|
||||
a = F32_to_U8( avatar->getActualBoobGrav(), param->getMinWeight(), param->getMaxWeight() );
|
||||
}
|
||||
/*//butt
|
||||
if(param->getID() == 795)
|
||||
{
|
||||
a = F32_to_U8( avatar->getActualButtGrav(), param->getMinWeight(), param->getMaxWeight() );
|
||||
}
|
||||
//fat
|
||||
if(param->getID() == 157)
|
||||
{
|
||||
a = F32_to_U8( avatar->getActualFatGrav(), param->getMinWeight(), param->getMaxWeight() );
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
U8 b = F32_to_U8( weight, param->getMinWeight(), param->getMaxWeight() );
|
||||
if( a != b )
|
||||
{
|
||||
llwarns << "param ID " << param->getID() << " was changed." << llendl;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
@@ -644,6 +689,16 @@ void LLWearable::writeToAvatar( BOOL set_by_user )
|
||||
{
|
||||
S32 param_id = param->getID();
|
||||
F32 weight = get_if_there(mVisualParamMap, param_id, param->getDefaultWeight());
|
||||
|
||||
//ZOMG: When switching shapes from inventory
|
||||
if(param_id == 507)
|
||||
avatar->setActualBoobGrav(weight);
|
||||
/*if(param_id == 795)
|
||||
avatar->setActualButtGrav(weight);
|
||||
if(param_id == 157)
|
||||
avatar->setActualFatGrav(weight);
|
||||
*/
|
||||
|
||||
// only animate with user-originated changes
|
||||
if (set_by_user)
|
||||
{
|
||||
@@ -781,6 +836,22 @@ void LLWearable::readFromAvatar()
|
||||
{
|
||||
if( (((LLViewerVisualParam*)param)->getWearableType() == mType) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) )
|
||||
{
|
||||
|
||||
//pretty sure is right
|
||||
if(param->getID() == 507)
|
||||
avatar->setActualBoobGrav(param->getWeight());
|
||||
/*if(param->getID() == 151)
|
||||
avatar->setActualButtGrav(param->getWeight());
|
||||
if(param->getID() == 157)
|
||||
avatar->setActualFatGrav(param->getWeight());
|
||||
*/
|
||||
//if(param->getID() == 507)
|
||||
//{
|
||||
// llwarns << "current = " << avatar->getActualBoobGrav() << llendl;
|
||||
// llwarns << "param weight = " << param->getWeight() << llendl;
|
||||
//}
|
||||
|
||||
|
||||
mVisualParamMap[param->getID()] = param->getWeight();
|
||||
}
|
||||
}
|
||||
@@ -832,6 +903,27 @@ void LLWearable::copyDataFrom( LLWearable* src )
|
||||
{
|
||||
S32 id = param->getID();
|
||||
F32 weight = get_if_there(src->mVisualParamMap, id, param->getDefaultWeight() );
|
||||
//llwarns << "------------------------------" << llendl;
|
||||
//llwarns << "copydatafrom" << llendl;
|
||||
//llwarns << "------------------------------" << llendl;
|
||||
|
||||
//if(id == 507)
|
||||
//{
|
||||
// llwarns << "weight = " << weight << llendl;
|
||||
// llwarns << "actual = " << avatar->getActualBoobGrav() << llendl;
|
||||
// llwarns << "mVisualParamMap[id] = " << mVisualParamMap[id] << llendl;
|
||||
//}
|
||||
|
||||
//pretty sure right
|
||||
if(id == 507)
|
||||
avatar->setActualBoobGrav(weight);
|
||||
/*if(id == 795)
|
||||
avatar->setActualButtGrav(weight);
|
||||
if(id == 157)
|
||||
avatar->setActualFatGrav(weight);
|
||||
*/
|
||||
|
||||
|
||||
mVisualParamMap[id] = weight;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -537,7 +537,7 @@ Go to World menu > About Land or select another parcel to show its details.
|
||||
column_padding="0" draw_border="true" draw_heading="true"
|
||||
draw_stripes="true" enabled="true"
|
||||
follows="left|top|right|bottom" height="117" left="4" mouse_opaque="true"
|
||||
multi_select="false" name="owner list" name_column_index="2" width="450">
|
||||
multi_select="true" name="owner list" name_column_index="2" width="450">
|
||||
<column name="type" label="Type" sort="online_status" width="24" />
|
||||
<column name="online_status" width="-1" />
|
||||
<column name="name" dynamicwidth="true" label="Name" />
|
||||
|
||||
@@ -73,6 +73,11 @@
|
||||
mouse_opaque="true" name="Quit" shortcut="control|Q" width="243">
|
||||
<on_click function="File.Quit" userdata="" />
|
||||
</menu_item_call>
|
||||
<!--<menu_item_check bottom="-384" enabled="true" height="19" label="Test" left="0"
|
||||
mouse_opaque="true" name="ascentuploadbrowser" width="211">
|
||||
<on_click function="ShowFloater" userdata="ascentuploadbrowser" />
|
||||
<on_check function="FloaterVisible" userdata="ascentuploadbrowser" />
|
||||
</menu_item_check>-->
|
||||
</menu>
|
||||
<menu bottom="97" create_jump_keys="true" drop_shadow="true" enabled="true"
|
||||
height="439" label="Edit" left="38" mouse_opaque="false" name="Edit"
|
||||
|
||||
@@ -29,6 +29,19 @@
|
||||
tool_tip="Rez objects with the same group that the object is being rezzed on has, regardless of your active tag."
|
||||
mouse_opaque="true" name="always_rez_in_group_check" radio_style="false"
|
||||
width="400" />
|
||||
<check_box bottom_delta="-20" control_name="AscentDisableTeleportScreens" enabled="true"
|
||||
follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
|
||||
label="Disable the Teleport progress screens" left="10"
|
||||
tool_tip="Viewer will not hide your UI while teleporting, allowing you to continue to read IMs."
|
||||
mouse_opaque="true" name="always_rez_in_group_check" radio_style="false"
|
||||
width="400" />
|
||||
<check_box bottom_delta="-20" control_name="AscentDisableLogoutScreens" enabled="true"
|
||||
follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
|
||||
label="Hide the Logout progress screen" left="10"
|
||||
tool_tip="Does not hide the UI when logging out."
|
||||
mouse_opaque="true" name="always_rez_in_group_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="Chat/IM" name="Chat/IM">
|
||||
@@ -265,8 +278,8 @@
|
||||
tool_tip="" name="AscentCmdLineMapTo" control_name="AscentCmdLineMapTo" width="200"/>
|
||||
<check_box bottom_delta="-24" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
|
||||
initial_value="false" label="Use same position between sims" left_delta="0" mouse_opaque="true"
|
||||
name="AscentCmdLineMapToKeepPos" radio_style="false" width="270"
|
||||
control_name="AscentCmdLineMapToKeepPos"/>
|
||||
name="AscentMapToKeepPos" radio_style="false" width="270"
|
||||
control_name="AscentMapToKeepPos"/>
|
||||
<text bottom_delta="-18" follows="left|top" font="SansSerifSmall" height="16" left_delta="0"
|
||||
name="cmd_line_text_13" width="512">
|
||||
Teleport to avatar (usage: cmd name)</text>
|
||||
@@ -294,6 +307,12 @@
|
||||
tool_tip="Turns off broadcasting headturns and lookat beacons for yourself."
|
||||
mouse_opaque="true" name="private_look_at_check" radio_style="false"
|
||||
width="400" />
|
||||
<check_box bottom_delta="-20" control_name="ShowLookAt" enabled="true"
|
||||
follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
|
||||
label="Show others' LookAt beacons" left="10"
|
||||
tool_tip="Shows you where others are looking."
|
||||
mouse_opaque="true" name="show_look_at_check" radio_style="false"
|
||||
width="400" />
|
||||
<check_box bottom_delta="-20" control_name="RevokePermsOnStandUp" enabled="true"
|
||||
follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
|
||||
label="On standing up, revoke perms for the object your avatar was sitting on" left="10"
|
||||
|
||||
@@ -3,38 +3,15 @@
|
||||
border="true" label="Ascent Vanity" name="ascvan" enabled="true" mouse_opaque="true">
|
||||
<tab_container label="Ascent" bottom="0" height="440" width="500" left="0"
|
||||
name="Ascent Vanity" tab_min_width="90" tab_position="top">
|
||||
<panel border="true" left="1" bottom="-190" height="180" width="500" mouse_opaque="true"
|
||||
follows="left|top|right|bottom" label="General" name="General">
|
||||
<check_box bottom_delta="-25" control_name="AscentStoreSettingsPerAccount" enabled="true"
|
||||
<panel border="true" left="1" bottom="-190" height="180" width="500" mouse_opaque="true"
|
||||
follows="left|top|right|bottom" label="General" name="General">
|
||||
<check_box bottom_delta="-25" control_name="AscentStoreSettingsPerAccount" enabled="true"
|
||||
follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
|
||||
label="Where applicable, save Vanity settings per-account." left="10"
|
||||
tool_tip="Saves settings per-account, allowing easier customization for alts."
|
||||
mouse_opaque="true" name="use_account_settings_check" radio_style="false"
|
||||
width="400" />
|
||||
<check_box bottom="-50" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
|
||||
label="Enable enhanced physics on avatar breasts" left="10" mouse_opaque="true" name="EmBreastsToggle"
|
||||
control_name="EmeraldBreastPhysicsToggle" width="126"/>
|
||||
<slider bottom_delta="-20" left="10" name="EmeraldBoobMass" control_name="EmeraldBoobMass"
|
||||
decimal_digits="0" enabled="true" follows="left|top" height="18" increment="1"
|
||||
label="Breast mass:" label_width="100" max_val="100" min_val="1" mouse_opaque="true"
|
||||
show_text="true" width="250" auto_resize="false" tool_tip=""/>
|
||||
<slider bottom_delta="-20" left_delta="0" name="EmeraldBoobHardness" control_name="EmeraldBoobHardness"
|
||||
decimal_digits="0" enabled="true" follows="left|top" height="18" increment="1"
|
||||
label="Breast rebound:" label_width="100" max_val="100" min_val="1" mouse_opaque="true"
|
||||
show_text="true" width="250" auto_resize="false" tool_tip=""/>
|
||||
<slider bottom_delta="-20" left_delta="0" name="EmeraldBoobVelMax" control_name="EmeraldBoobVelMax"
|
||||
decimal_digits="0" enabled="true" follows="left|top" height="18" increment="1"
|
||||
label="Breast max vel:" label_width="100" max_val="100" min_val="1" mouse_opaque="true"
|
||||
show_text="true" width="250" auto_resize="false" tool_tip=""/>
|
||||
<slider bottom_delta="-20" left_delta="0" name="EmeraldBoobFriction" control_name="EmeraldBoobFriction"
|
||||
decimal_digits="0" enabled="true" follows="left|top" height="18" increment="1"
|
||||
label="Breast friction:" label_width="100" max_val="100" min_val="1" mouse_opaque="true"
|
||||
show_text="true" width="250" auto_resize="false" tool_tip=""/>
|
||||
<slider bottom_delta="-20" left_delta="0" name="EmeraldBoobVelMin" control_name="EmeraldBoobVelMin"
|
||||
decimal_digits="0" enabled="true" follows="left|top" height="18" increment="1"
|
||||
label="Breast min vel:" label_width="100" max_val="100" min_val="1" mouse_opaque="true"
|
||||
show_text="true" width="250" auto_resize="false" tool_tip=""/>
|
||||
</panel>
|
||||
</panel>
|
||||
<panel border="true" left="1" bottom="-190" height="180" width="500" mouse_opaque="true"
|
||||
follows="left|top|right|bottom" label="Colors" name="Colors">
|
||||
<!-- Client tag options -->
|
||||
@@ -153,5 +130,31 @@
|
||||
mouse_opaque="true" name="effect_color_swatch"
|
||||
tool_tip="Click to open Color Picker" width="32" />
|
||||
</panel>
|
||||
<panel border="true" left="1" bottom="-190" height="180" width="500" mouse_opaque="true"
|
||||
follows="left|top|right|bottom" label="Body Dynamics" name="Body Dynamics">
|
||||
<check_box bottom_delta="-25" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
|
||||
label="Enable enhanced physics on avatar breasts" left="10" mouse_opaque="true" name="EmBreastsToggle"
|
||||
control_name="EmeraldBreastPhysicsToggle" width="126"/>
|
||||
<slider bottom_delta="-20" left="10" name="EmeraldBoobMass" control_name="EmeraldBoobMass"
|
||||
decimal_digits="0" enabled="true" follows="left|top" height="18" increment="1"
|
||||
label="Breast mass:" label_width="100" max_val="100" min_val="1" mouse_opaque="true"
|
||||
show_text="true" width="250" auto_resize="false" tool_tip=""/>
|
||||
<slider bottom_delta="-20" left_delta="0" name="EmeraldBoobHardness" control_name="EmeraldBoobHardness"
|
||||
decimal_digits="0" enabled="true" follows="left|top" height="18" increment="1"
|
||||
label="Breast rebound:" label_width="100" max_val="100" min_val="1" mouse_opaque="true"
|
||||
show_text="true" width="250" auto_resize="false" tool_tip=""/>
|
||||
<slider bottom_delta="-20" left_delta="0" name="EmeraldBoobVelMax" control_name="EmeraldBoobVelMax"
|
||||
decimal_digits="0" enabled="true" follows="left|top" height="18" increment="1"
|
||||
label="Breast max vel:" label_width="100" max_val="100" min_val="1" mouse_opaque="true"
|
||||
show_text="true" width="250" auto_resize="false" tool_tip=""/>
|
||||
<slider bottom_delta="-20" left_delta="0" name="EmeraldBoobFriction" control_name="EmeraldBoobFriction"
|
||||
decimal_digits="0" enabled="true" follows="left|top" height="18" increment="1"
|
||||
label="Breast friction:" label_width="100" max_val="100" min_val="1" mouse_opaque="true"
|
||||
show_text="true" width="250" auto_resize="false" tool_tip=""/>
|
||||
<slider bottom_delta="-20" left_delta="0" name="EmeraldBoobVelMin" control_name="EmeraldBoobVelMin"
|
||||
decimal_digits="0" enabled="true" follows="left|top" height="18" increment="1"
|
||||
label="Breast min vel:" label_width="100" max_val="100" min_val="1" mouse_opaque="true"
|
||||
show_text="true" width="250" auto_resize="false" tool_tip=""/>
|
||||
</panel>
|
||||
</tab_container>
|
||||
</panel>
|
||||
|
||||
Reference in New Issue
Block a user