Merge branch 'master' of github.com:Beeks/Ascent

This commit is contained in:
CharleyLevenque
2010-08-30 01:49:39 -04:00
15 changed files with 8717 additions and 8527 deletions

View File

@@ -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.

View File

@@ -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

View File

@@ -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>

View File

@@ -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

View File

@@ -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

View File

@@ -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)
{

View File

@@ -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();

View File

@@ -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)
{

View File

@@ -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

View File

@@ -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;
}
}

View File

@@ -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" />

View File

@@ -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"

View File

@@ -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"

View File

@@ -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>