Merge branch 'master' into V2Renderer

Conflicts:
	indra/newview/llvoavatar.h
This commit is contained in:
Shyotl
2011-05-14 14:03:25 -05:00
33 changed files with 1463 additions and 1285 deletions

View File

@@ -216,3 +216,12 @@ target_link_libraries(
${WINDOWS_LIBRARIES}
)
if (DARWIN)
# Don't embed a full path in the library's install name
set_target_properties(
llcommon
PROPERTIES
BUILD_WITH_INSTALL_RPATH 1
INSTALL_NAME_DIR "@executable_path/../Resources"
)
endif (DARWIN)

View File

@@ -35,13 +35,13 @@
const S32 LL_VERSION_MAJOR = 1;
const S32 LL_VERSION_MINOR = 5;
const S32 LL_VERSION_PATCH = 7;
const S32 LL_VERSION_BUILD = 1;
const S32 LL_VERSION_PATCH = 8;
const S32 LL_VERSION_BUILD = 0;
const char * const LL_CHANNEL = "Singularity";
#if LL_DARWIN
const char * const LL_VERSION_BUNDLE_ID = "com.secondlife.snowglobe.viewer";
const char * const LL_VERSION_BUNDLE_ID = "com.secondlife.singularity.viewer";
#endif
#endif

View File

@@ -178,8 +178,6 @@ LLView* LLComboBox::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *
NULL);
combo_box->setAllowTextEntry(allow_text_entry, max_chars);
combo_box->initFromXML(node, parent);
const std::string& contents = node->getValue();
if (contents.find_first_not_of(" \n\t") != contents.npos)
@@ -210,6 +208,9 @@ LLView* LLComboBox::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *
}
}
//Do this AFTER combo_items are set up so setValue is actually able to select the correct initial entry.
combo_box->initFromXML(node, parent);
// if providing user text entry or descriptive label
// don't select an item under the hood
if (!combo_box->acceptsTextInput() && combo_box->mLabel.empty())

View File

@@ -419,7 +419,7 @@ void LLFloaterAO::onComboBoxCommit(LLUICtrl* ctrl, void* userdata)
{
int state = STATE_AGENT_IDLE;
std::string stranim = box->getValue().asString();
// llinfos << "state " << (gAgent.getAvatarObject()->mIsSitting) << " - " << getAnimationState() << llendl;
// llinfos << "state " << (gAgent.getAvatarObject()->isSitting()) << " - " << getAnimationState() << llendl;
if (box->getName() == "walks")
{
gAgent.sendAnimationRequest(GetAnimID(ANIM_AGENT_WALK), ANIM_REQUEST_STOP);
@@ -442,7 +442,7 @@ void LLFloaterAO::onComboBoxCommit(LLUICtrl* ctrl, void* userdata)
{
if (gAgent.getAvatarObject() && (gSavedSettings.getBOOL("AOEnabled")) && (gSavedSettings.getBOOL("AOSitsEnabled")))
{
if ((gAgent.getAvatarObject()->mIsSitting) && (getAnimationState() == STATE_AGENT_SIT))
if ((gAgent.getAvatarObject()->isSitting()) && (getAnimationState() == STATE_AGENT_SIT))
{
// llinfos << "sitting " << GetAnimID(ANIM_AGENT_SIT) << " " << getAssetIDByName(stranim) << llendl;
gAgent.sendAnimationRequest(GetAnimID(ANIM_AGENT_SIT), ANIM_REQUEST_STOP);
@@ -457,7 +457,7 @@ void LLFloaterAO::onComboBoxCommit(LLUICtrl* ctrl, void* userdata)
// llinfos << "gsitting " << GetAnimID(ANIM_AGENT_SIT_GROUND) << " " << getAssetIDByName(stranim) << llendl;
if (gAgent.getAvatarObject())
{
if ((gAgent.getAvatarObject()->mIsSitting) && (getAnimationState() == STATE_AGENT_GROUNDSIT))
if ((gAgent.getAvatarObject()->isSitting()) && (getAnimationState() == STATE_AGENT_GROUNDSIT))
{
// llinfos << "gsitting " << GetAnimID(ANIM_AGENT_SIT_GROUND) << " " << getAssetIDByName(stranim) << llendl;
gAgent.sendAnimationRequest(GetAnimID(ANIM_AGENT_SIT_GROUND), ANIM_REQUEST_STOP);
@@ -768,7 +768,7 @@ int LLFloaterAO::getAnimationState()
{
if (gAgent.getAvatarObject())
{
if (gAgent.getAvatarObject()->mIsSitting) setAnimationState(STATE_AGENT_SIT);
if (gAgent.getAvatarObject()->isSitting()) setAnimationState(STATE_AGENT_SIT);
else if (gAgent.getFlying()) setAnimationState(STATE_AGENT_HOVER);
}
return mAnimationState;
@@ -859,7 +859,7 @@ BOOL LLFloaterAO::ChangeStand()
{
if (gSavedSettings.getBOOL("AONoStandsInMouselook") && gAgent.cameraMouselook()) return FALSE;
if (gAgent.getAvatarObject()->mIsSitting)
if (gAgent.getAvatarObject()->isSitting())
{
// stopMotion(getCurrentStandId(), FALSE, TRUE); //stop stand first then set state
// if (getAnimationState() != STATE_AGENT_GROUNDSIT) setAnimationState(STATE_AGENT_SIT);
@@ -912,7 +912,7 @@ BOOL LLFloaterAO::startMotion(const LLUUID& id, F32 time_offset, BOOL stand)
BOOL sitting = FALSE;
if (gAgent.getAvatarObject())
{
sitting = gAgent.getAvatarObject()->mIsSitting;
sitting = gAgent.getAvatarObject()->isSitting();
}
if (sitting) return FALSE;
gAgent.sendAnimationRequest(id, ANIM_REQUEST_START);

View File

@@ -864,7 +864,7 @@ void LLAgent::setFlying(BOOL fly)
}
// don't allow taking off while sitting
if (fly && mAvatarObject->mIsSitting)
if (fly && mAvatarObject->isSitting())
{
return;
}
@@ -1363,7 +1363,7 @@ F32 LLAgent::clampPitchToLimits(F32 angle)
F32 angle_from_skyward = acos( mFrameAgent.getAtAxis() * skyward );
if (isAgentAvatarValid() && mAvatarObject->mIsSitting)
if (isAgentAvatarValid() && mAvatarObject->isSitting())
{
look_down_limit = 130.f * DEG_TO_RAD;
}
@@ -2716,7 +2716,7 @@ void LLAgent::updateLookAt(const S32 mouse_x, const S32 mouse_y)
else
{
// *FIX: rotate mframeagent by sit object's rotation?
LLQuaternion look_rotation = mAvatarObject->mIsSitting ? mAvatarObject->getRenderRotation() : mFrameAgent.getQuaternion(); // use camera's current rotation
LLQuaternion look_rotation = mAvatarObject->isSitting() ? mAvatarObject->getRenderRotation() : mFrameAgent.getQuaternion(); // use camera's current rotation
LLVector3 look_offset = LLVector3(2.f, 0.f, 0.f) * look_rotation * av_inv_rot;
setLookAt(LOOKAT_TARGET_IDLE, mAvatarObject, look_offset);
}
@@ -3158,7 +3158,7 @@ void LLAgent::updateCamera()
validateFocusObject();
if (isAgentAvatarValid() &&
mAvatarObject->mIsSitting &&
mAvatarObject->isSitting() &&
camera_mode == CAMERA_MODE_MOUSELOOK)
{
//Ventrella
@@ -3279,7 +3279,7 @@ void LLAgent::updateCamera()
// (2) focus, and (3) upvector. They can then be queried elsewhere in llAgent.
//--------------------------------------------------------------------------------
// *TODO: use combined rotation of frameagent and sit object
LLQuaternion avatarRotationForFollowCam = mAvatarObject->mIsSitting ? mAvatarObject->getRenderRotation() : mFrameAgent.getQuaternion();
LLQuaternion avatarRotationForFollowCam = mAvatarObject->isSitting() ? mAvatarObject->getRenderRotation() : mFrameAgent.getQuaternion();
LLFollowCamParams* current_cam = LLFollowCamMgr::getActiveFollowCamParams();
if (current_cam)
@@ -3460,7 +3460,7 @@ void LLAgent::updateCamera()
}
mLastPositionGlobal = global_pos;
if (LLVOAvatar::sVisibleInFirstPerson && mAvatarObject.notNull() && !mAvatarObject->mIsSitting && cameraMouselook())
if (LLVOAvatar::sVisibleInFirstPerson && mAvatarObject.notNull() && !mAvatarObject->isSitting() && cameraMouselook())
{
LLVector3 head_pos = mAvatarObject->mHeadp->getWorldPosition() +
LLVector3(0.08f, 0.f, 0.05f) * mAvatarObject->mHeadp->getWorldRotation() +
@@ -3650,7 +3650,7 @@ LLVector3d LLAgent::calcFocusPositionTargetGlobal()
}
return mFocusTargetGlobal;
}
else if (mSitCameraEnabled && mAvatarObject.notNull() && mAvatarObject->mIsSitting && mSitCameraReferenceObject.notNull())
else if (mSitCameraEnabled && mAvatarObject.notNull() && mAvatarObject->isSitting() && mSitCameraReferenceObject.notNull())
{
// sit camera
LLVector3 object_pos = mSitCameraReferenceObject->getRenderPosition();
@@ -3775,7 +3775,7 @@ LLVector3d LLAgent::calcCameraPositionTargetGlobal(BOOL *hit_limit)
return LLVector3d::zero;
}
head_offset.clearVec();
if (mAvatarObject->mIsSitting && mAvatarObject->getParent())
if (mAvatarObject->isSitting() && mAvatarObject->getParent())
{
mAvatarObject->updateHeadOffset();
head_offset.mdV[VX] = mAvatarObject->mHeadOffset.mV[VX];
@@ -3789,7 +3789,7 @@ LLVector3d LLAgent::calcCameraPositionTargetGlobal(BOOL *hit_limit)
else
{
head_offset.mdV[VZ] = mAvatarObject->mHeadOffset.mV[VZ];
if (mAvatarObject->mIsSitting)
if (mAvatarObject->isSitting())
{
head_offset.mdV[VZ] += 0.1;
}
@@ -3805,7 +3805,7 @@ LLVector3d LLAgent::calcCameraPositionTargetGlobal(BOOL *hit_limit)
if (mSitCameraEnabled
&& isAgentAvatarValid()
&& mAvatarObject->mIsSitting
&& mAvatarObject->isSitting()
&& mSitCameraReferenceObject.notNull())
{
// sit camera
@@ -3837,7 +3837,7 @@ LLVector3d LLAgent::calcCameraPositionTargetGlobal(BOOL *hit_limit)
local_camera_offset = mFrameAgent.rotateToAbsolute( local_camera_offset );
}
if (!mCameraCollidePlane.isExactlyZero() && (!isAgentAvatarValid() || !mAvatarObject->mIsSitting))
if (!mCameraCollidePlane.isExactlyZero() && (!isAgentAvatarValid() || !mAvatarObject->isSitting()))
{
LLVector3 plane_normal;
plane_normal.setVec(mCameraCollidePlane.mV);
@@ -4215,7 +4215,7 @@ void LLAgent::changeCameraToThirdPerson(BOOL animate)
// [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g) +SG
if ( (!gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT))
&& (mAvatarObject.notNull())
&& (mAvatarObject->mIsSitting)
&& (mAvatarObject->isSitting())
&& gSavedSettings.getBOOL("SianaUnsitOnCamReset"))
{
setControlFlags(AGENT_CONTROL_STAND_UP); // force stand up
@@ -4228,7 +4228,7 @@ void LLAgent::changeCameraToThirdPerson(BOOL animate)
if (isAgentAvatarValid())
{
if (!mAvatarObject->mIsSitting)
if (!mAvatarObject->isSitting())
{
mAvatarObject->mPelvisp->setPosition(LLVector3::zero);
}
@@ -6308,7 +6308,7 @@ void LLAgent::teleportViaLandmark(const LLUUID& landmark_asset_id)
// [RLVa:KB] - Checked: 2009-07-07 (RLVa-1.0.0d)
if ( (rlv_handler_t::isEnabled()) &&
( (gRlvHandler.hasBehaviour(RLV_BHVR_TPLM)) ||
((gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) && (mAvatarObject.notNull()) && (mAvatarObject->mIsSitting)) ))
((gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) && (mAvatarObject.notNull()) && (mAvatarObject->isSitting())) ))
{
RlvNotifications::notifyBlockedTeleport();
return;
@@ -6384,7 +6384,7 @@ void LLAgent::teleportViaLocation(const LLVector3d& pos_global)
{
// If we're getting teleported due to @tpto we should disregard any @tploc=n or @unsit=n restrictions from the same object
if ( (gRlvHandler.hasBehaviourExcept(RLV_BHVR_TPLOC, gRlvHandler.getCurrentObject())) ||
( (mAvatarObject.notNull()) && (mAvatarObject->mIsSitting) &&
( (mAvatarObject.notNull()) && (mAvatarObject->isSitting()) &&
(gRlvHandler.hasBehaviourExcept(RLV_BHVR_UNSIT, gRlvHandler.getCurrentObject()))) )
{
RlvNotifications::notifyBlockedTeleport();

View File

@@ -715,31 +715,38 @@ void LLFloaterAvatarList::refreshAvatarList()
estate_owner = parent_estate->getOwner();
}
static const LLCachedControl<LLColor4> unselected_color("ScrollUnselectedColor",LLColor4(LLColor4U(0, 0, 0, 204)), gColors );
LLColor4 name_color = unselected_color;
//Lindens are always more Linden than your friend, make that take precedence
if(LLMuteList::getInstance()->isLinden(av_name))
{
static const LLCachedControl<LLColor4> ascent_linden_color("AscentLindenColor",LLColor4(0.f,0.f,1.f,1.f));
element["columns"][LIST_AVATAR_NAME]["color"] = ascent_linden_color.get().getValue();
name_color = ascent_linden_color;
}
//check if they are an estate owner at their current position
else if(estate_owner.notNull() && av_id == estate_owner)
{
static const LLCachedControl<LLColor4> ascent_estate_owner_color("AscentEstateOwnerColor",LLColor4(1.f,0.6f,1.f,1.f));
element["columns"][LIST_AVATAR_NAME]["color"] = ascent_estate_owner_color.get().getValue();
name_color = ascent_estate_owner_color;
}
//without these dots, SL would suck.
else if(is_agent_friend(av_id))
{
static const LLCachedControl<LLColor4> ascent_friend_color("AscentFriendColor",LLColor4(1.f,1.f,0.f,1.f));
element["columns"][LIST_AVATAR_NAME]["color"] = ascent_friend_color.get().getValue();
name_color = ascent_friend_color;
}
//big fat jerkface who is probably a jerk, display them as such.
else if(LLMuteList::getInstance()->isMuted(av_id))
{
static const LLCachedControl<LLColor4> ascent_muted_color("AscentMutedColor",LLColor4(0.7f,0.7f,0.7f,1.f));
element["columns"][LIST_AVATAR_NAME]["color"] = ascent_muted_color.get().getValue();
name_color = ascent_muted_color;
}
name_color = name_color*0.5f + unselected_color*0.5f;
element["columns"][LIST_AVATAR_NAME]["color"] = name_color.getValue();
char temp[32];
LLColor4 color = LLColor4::black;
@@ -830,16 +837,15 @@ void LLFloaterAvatarList::refreshAvatarList()
//element["columns"][LIST_METADATA]["type"] = "text";
static const LLCachedControl<LLColor4> avatar_name_color("AvatarNameColor",LLColor4(LLColor4U(251, 175, 93, 255)), gColors );
static const LLCachedControl<LLColor4> unselected_color("ScrollUnselectedColor",LLColor4(LLColor4U(0, 0, 0, 204)), gColors );
LLColor4 name_color(avatar_name_color);
LLColor4 client_color(avatar_name_color);
std::string client;
LLVOAvatar *avatarp = gObjectList.findAvatar(av_id);
if(avatarp)
{
avatarp->getClientInfo(client, name_color, TRUE);
avatarp->getClientInfo(client, client_color, TRUE);
if(client == "")
{
name_color = unselected_color;
client_color = unselected_color;
client = "?";
}
element["columns"][LIST_CLIENT]["value"] = client.c_str();
@@ -857,9 +863,9 @@ void LLFloaterAvatarList::refreshAvatarList()
element["columns"][LIST_CLIENT]["value"] = "Out Of Range";
}
//Blend to make the color show up better
name_color = name_color *.5f + unselected_color * .5f;
client_color = client_color *.5f + unselected_color * .5f;
element["columns"][LIST_CLIENT]["color"] = avatar_name_color.get().getValue();
element["columns"][LIST_CLIENT]["color"] = client_color.getValue();
// Add to list
mAvatarList->addElement(element, ADD_BOTTOM);

View File

@@ -77,6 +77,7 @@ void LLFloaterHardwareSettings::refresh()
LLPanel::refresh();
mUseVBO = gSavedSettings.getBOOL("RenderVBOEnable");
mUseFBO = gSavedSettings.getBOOL("RenderUseFBO");
mUseAniso = gSavedSettings.getBOOL("RenderAnisotropic");
mFSAASamples = gSavedSettings.getU32("RenderFSAASamples");
mGamma = gSavedSettings.getF32("RenderGamma");
@@ -106,7 +107,8 @@ void LLFloaterHardwareSettings::refreshEnabledState()
{
childSetEnabled("vbo_stream", LLVertexBuffer::sEnableVBOs);
}
childSetEnabled("fbo",gGLManager.mHasFramebufferObject);
// if no windlight shaders, turn off nighttime brightness, gamma, and fog distance
childSetEnabled("gamma", !gPipeline.canUseWindLightShaders());
@@ -192,6 +194,7 @@ void LLFloaterHardwareSettings::apply()
void LLFloaterHardwareSettings::cancel()
{
gSavedSettings.setBOOL("RenderVBOEnable", mUseVBO);
gSavedSettings.setBOOL("RenderUseFBO", mUseFBO);
gSavedSettings.setBOOL("RenderAnisotropic", mUseAniso);
gSavedSettings.setU32("RenderFSAASamples", mFSAASamples);
gSavedSettings.setF32("RenderGamma", mGamma);

View File

@@ -88,6 +88,7 @@ protected:
LLSliderCtrl* mCtrlVideoCardMem;
BOOL mUseVBO;
BOOL mUseFBO;
BOOL mUseAniso;
U32 mFSAASamples;
F32 mGamma;

View File

@@ -325,9 +325,9 @@ void LLOverlayBar::refresh()
BOOL sitting = FALSE;
if (gAgent.getAvatarObject())
{
// sitting = gAgent.getAvatarObject()->mIsSitting;
// sitting = gAgent.getAvatarObject()->isSitting();
// [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g)
sitting = gAgent.getAvatarObject()->mIsSitting && !gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT);
sitting = gAgent.getAvatarObject()->isSitting() && !gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT);
// [/RLVa:KB]
}
button = getChild<LLButton>("Stand Up");
@@ -449,7 +449,7 @@ void LLOverlayBar::onClickMouselook(void*)
void LLOverlayBar::onClickStandUp(void*)
{
// [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g)
if ( (gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) && (gAgent.getAvatarObject()) && (gAgent.getAvatarObject()->mIsSitting) )
if ( (gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) && (gAgent.getAvatarObject()) && (gAgent.getAvatarObject()->isSitting()) )
{
return;
}

View File

@@ -136,7 +136,7 @@ void LLPanelContents::getState(LLViewerObject *objectp )
LLViewerObject* pObj = LLSelectMgr::getInstance()->getSelection()->getFirstRootObject(TRUE);
LLVOAvatar* pAvatar = gAgent.getAvatarObject();
editable = (pObj) && (pAvatar) && ((!pAvatar->mIsSitting) || (pAvatar->getRoot() != pObj->getRootEdit()));
editable = (pObj) && (pAvatar) && ((!pAvatar->isSitting()) || (pAvatar->getRoot() != pObj->getRootEdit()));
}
}
// [/RLVa:KB]
@@ -185,7 +185,7 @@ void LLPanelContents::onClickNewScript(void *userdata)
else if ( (gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) || (gRlvHandler.hasBehaviour(RLV_BHVR_SITTP)) )
{
LLVOAvatar* pAvatar = gAgent.getAvatarObject();
if ( (pAvatar) && (pAvatar->mIsSitting) && (pAvatar->getRoot() == object->getRootEdit()) )
if ( (pAvatar) && (pAvatar->isSitting()) && (pAvatar->getRoot() == object->getRootEdit()) )
return; // .. or in a linkset the avie is sitting on under @unsit=n/@sittp=n
}
}

View File

@@ -490,9 +490,19 @@ void LLPanelDisplay::refreshEnabledState()
mCtrlAvatarCloth->setEnabled(true);
}
BOOL can_defer = gSavedSettings.getBOOL("RenderUseFBO");
//I actually recommend RenderUseFBO:FALSE for ati users when not using deferred, so RenderUseFBO shouldn't control visibility of the element.
// Instead, gGLManager.mHasFramebufferObject seems better as it is determined by hardware and not current user settings. -Shyotl
//Enabling deferred will force RenderUseFBO to TRUE.
BOOL can_defer = gGLManager.mHasFramebufferObject &&
LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") && //Ensure it's enabled in the gpu feature table
LLFeatureManager::getInstance()->isFeatureAvailable("RenderAvatarVP") && //Hardware Skinning. Deferred forces RenderAvatarVP to true
LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable") && gSavedSettings.getBOOL("VertexShaderEnable") && //Basic Shaders
LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders") && gSavedSettings.getBOOL("WindLightUseAtmosShaders"); //Atmospheric Shaders
mCtrlDeferred->setEnabled(can_defer);
mCtrlSunShadow->setEnabled(can_defer && gSavedSettings.getBOOL("RenderDeferred"));
mCtrlAvatarCloth->setValue(gSavedSettings.getBOOL("RenderAvatarVP")); //Enabling RenderDeferred changes this setting behind this floaters back.
// Vertex Shaders
// mCtrlShaderEnable->setEnabled(LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable"));

View File

@@ -447,7 +447,7 @@ BOOL LLTaskInvFVBridge::isItemMovable()
else if ( (gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) || (gRlvHandler.hasBehaviour(RLV_BHVR_SITTP)) )
{
LLVOAvatar* pAvatar = gAgent.getAvatarObject();
if ( (pAvatar) && (pAvatar->mIsSitting) && (pAvatar->getRoot() == pObj->getRootEdit()) )
if ( (pAvatar) && (pAvatar->isSitting()) && (pAvatar->getRoot() == pObj->getRootEdit()) )
return FALSE;
}
}
@@ -470,7 +470,7 @@ BOOL LLTaskInvFVBridge::isItemRemovable()
else if ( (gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) || (gRlvHandler.hasBehaviour(RLV_BHVR_SITTP)) )
{
LLVOAvatar* pAvatar = gAgent.getAvatarObject();
if ( (pAvatar) && (pAvatar->mIsSitting) && (pAvatar->getRoot() == pObjRoot) )
if ( (pAvatar) && (pAvatar->isSitting()) && (pAvatar->getRoot() == pObjRoot) )
return FALSE;
}
}

View File

@@ -505,7 +505,7 @@ void LLPanelObject::getState( )
if ( (rlv_handler_t::isEnabled()) && ((gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) || (gRlvHandler.hasBehaviour(RLV_BHVR_SITTP))) )
{
LLVOAvatar* pAvatar = gAgent.getAvatarObject();
if ( (pAvatar) && (pAvatar->mIsSitting) && (pAvatar->getRoot() == objectp->getRootEdit()) )
if ( (pAvatar) && (pAvatar->isSitting()) && (pAvatar->getRoot() == objectp->getRootEdit()) )
enable_move = enable_scale = enable_rotate = FALSE;
}
// [/RLVa:KB]

View File

@@ -218,7 +218,7 @@ BOOL LLTexLayerSetBuffer::needsRender()
{
LLVOAvatar* avatar = mTexLayerSet->getAvatar();
BOOL upload_now = needsUploadNow();
BOOL needs_update = (mNeedsUpdate || upload_now) && !avatar->mAppearanceAnimating;
BOOL needs_update = (mNeedsUpdate || upload_now) && !avatar->getIsAppearanceAnimating();
if (needs_update)
{
BOOL invalid_skirt = avatar->getBakedTE(mTexLayerSet) == TEX_SKIRT_BAKED && !avatar->isWearingWearableType(WT_SKIRT);
@@ -1736,7 +1736,7 @@ BOOL LLTexLayer::renderAlphaMasks( S32 x, S32 y, S32 width, S32 height, LLColor4
for( morph_list_t::iterator iter3 = mMaskedMorphs.begin();
iter3 != mMaskedMorphs.end(); iter3++ )
{
LLMaskedMorph* maskedMorph = &(*iter3);
LLVOAvatar::LLMaskedMorph* maskedMorph = &(*iter3);
maskedMorph->mMorphTarget->applyMask(alpha_data, width, height, 1, maskedMorph->mInvert);
}
}
@@ -1749,7 +1749,7 @@ void LLTexLayer::applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_com
for( morph_list_t::iterator iter = mMaskedMorphs.begin();
iter != mMaskedMorphs.end(); iter++ )
{
LLMaskedMorph* maskedMorph = &(*iter);
LLVOAvatar::LLMaskedMorph* maskedMorph = &(*iter);
maskedMorph->mMorphTarget->applyMask(tex_data, width, height, num_components, maskedMorph->mInvert);
}
}
@@ -1832,7 +1832,7 @@ void LLTexLayer::requestUpdate()
void LLTexLayer::addMaskedMorph(LLPolyMorphTarget* morph_target, BOOL invert)
{
mMaskedMorphs.push_front(LLMaskedMorph(morph_target, invert));
mMaskedMorphs.push_front(LLVOAvatar::LLMaskedMorph(morph_target, invert));
}
void LLTexLayer::invalidateMorphMasks()
@@ -2619,11 +2619,3 @@ BOOL LLTexStaticImageList::loadImageRaw( const std::string& file_name, LLImageRa
return success;
}
//-----------------------------------------------------------------------------
// LLMaskedMorph()
//-----------------------------------------------------------------------------
LLMaskedMorph::LLMaskedMorph( LLPolyMorphTarget *morph_target, BOOL invert ) : mMorphTarget(morph_target), mInvert(invert)
{
morph_target->addPendingMorphMask();
}

View File

@@ -45,6 +45,7 @@
#include "llwearable.h"
#include "v4color.h"
#include "llfloater.h"
#include "llvoavatar.h"
class LLTexLayerSetInfo;
class LLTexLayerSet;
@@ -309,20 +310,6 @@ protected:
LLTexLayerSetInfo *mInfo;
};
//-----------------------------------------------------------------------------
// LLMaskedMorph
//-----------------------------------------------------------------------------
class LLMaskedMorph
{
public:
LLMaskedMorph( LLPolyMorphTarget *morph_target, BOOL invert );
public:
LLPolyMorphTarget *mMorphTarget;
BOOL mInvert;
};
//-----------------------------------------------------------------------------
// LLTexLayer
// A single texture layer
@@ -374,7 +361,7 @@ protected:
alpha_list_t mParamAlphaList;
typedef std::deque<LLMaskedMorph> morph_list_t;
typedef std::deque<LLVOAvatar::LLMaskedMorph> morph_list_t;
morph_list_t mMaskedMorphs;
typedef std::map<U32, U8*> alpha_cache_t;
alpha_cache_t mAlphaCache;

View File

@@ -295,7 +295,7 @@ void LLToolBar::refresh()
BOOL sitting = FALSE;
if (gAgent.getAvatarObject())
{
sitting = gAgent.getAvatarObject()->mIsSitting;
sitting = gAgent.getAvatarObject()->isSitting();
}
childSetEnabled("fly_btn", (gAgent.canFly() || gAgent.getFlying() || gSavedSettings.getBOOL("AscentFlyAlwaysEnabled")) && !sitting );

View File

@@ -2068,7 +2068,7 @@ EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LL
else if ( (gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) || (gRlvHandler.hasBehaviour(RLV_BHVR_SITTP)) )
{
LLVOAvatar* pAvatar = gAgent.getAvatarObject();
if ( (pAvatar) && (pAvatar->mIsSitting) && (pAvatar->getRoot() == pObjRoot) )
if ( (pAvatar) && (pAvatar->isSitting()) && (pAvatar->getRoot() == pObjRoot) )
return ACCEPT_NO_LOCKED; // ... or on a linkset the avie is sitting on under @unsit=n/@sittp=n
}
}

View File

@@ -146,7 +146,7 @@ void LLVisualParamHint::requestHintUpdates( LLVisualParamHint* exception1, LLVis
BOOL LLVisualParamHint::needsRender()
{
return mNeedsUpdate && mDelayFrames-- <= 0 && !gAgent.getAvatarObject()->mAppearanceAnimating && mAllowsUpdates;
return mNeedsUpdate && mDelayFrames-- <= 0 && !gAgent.getAvatarObject()->getIsAppearanceAnimating() && mAllowsUpdates;
}
void LLVisualParamHint::preRender(BOOL clear_depth)

View File

@@ -204,7 +204,7 @@ BOOL LLToolPie::pickAndShowMenu(BOOL always_show)
// touch behavior down below...
break;
case CLICK_ACTION_SIT:
if ((gAgent.getAvatarObject() != NULL) && (!gAgent.getAvatarObject()->mIsSitting)
if ((gAgent.getAvatarObject() != NULL) && (!gAgent.getAvatarObject()->isSitting())
&& (!gSavedSettings.getBOOL("DisableClickSit"))) // agent not already sitting
{
handle_sit_or_stand();
@@ -552,9 +552,9 @@ ECursorType cursor_from_object(LLViewerObject* object)
switch(click_action)
{
case CLICK_ACTION_SIT:
// if ((gAgent.getAvatarObject() != NULL) && (!gAgent.getAvatarObject()->mIsSitting)) // not already sitting?
// if ((gAgent.getAvatarObject() != NULL) && (!gAgent.getAvatarObject()->isSitting())) // not already sitting?
// [RLVa:KB] - Checked: 2009-12-22 (RLVa-1.1.0k) | Added: RLVa-1.1.0j
if ( ((gAgent.getAvatarObject() != NULL) && (!gAgent.getAvatarObject()->mIsSitting)) && // not already sitting?
if ( ((gAgent.getAvatarObject() != NULL) && (!gAgent.getAvatarObject()->isSitting())) && // not already sitting?
((!rlv_handler_t::isEnabled()) || (gRlvHandler.canSit(object, gViewerWindow->getHoverPick().mObjectOffset))) )
// [/RLVa:KB]
{

View File

@@ -842,7 +842,7 @@ EKeyboardMode LLViewerKeyboard::getMode()
{
return MODE_EDIT_AVATAR;
}
else if (gAgent.getAvatarObject() && gAgent.getAvatarObject()->mIsSitting)
else if (gAgent.getAvatarObject() && gAgent.getAvatarObject()->isSitting())
{
return MODE_SITTING;
}

View File

@@ -3498,7 +3498,7 @@ class LLSelfSitOrStand : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
if (gAgent.getAvatarObject() && gAgent.getAvatarObject()->mIsSitting)
if (gAgent.getAvatarObject() && gAgent.getAvatarObject()->isSitting())
{
// [RLVa:KB] - Alternate: Snowglobe-1.3.X | Checked: 2009-12-29 (RLVa-1.1.0k) | Added: RLVa-1.1.0k | OK
if (gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT))
@@ -3540,7 +3540,7 @@ class LLSelfEnableSitOrStand : public view_listener_t
stand_text = param.substr(offset+1);
}
if (gAgent.getAvatarObject() && gAgent.getAvatarObject()->mIsSitting)
if (gAgent.getAvatarObject() && gAgent.getAvatarObject()->isSitting())
{
// [RLVa:KB] - Alternate: Snowglobe-1.3.X | Checked: 2009-12-29 (RLVa-1.1.0k) | Added: RLVa-1.1.0k | OK
new_value &= (!gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT));
@@ -3757,7 +3757,7 @@ void handle_force_ground_sit(void*)
{
if (gAgent.getAvatarObject())
{
if(!gAgent.getAvatarObject()->mIsSitting)
if(!gAgent.getAvatarObject()->isSitting())
{
gAgent.setControlFlags(AGENT_CONTROL_SIT_ON_GROUND);
}
@@ -3958,7 +3958,7 @@ bool handle_sit_or_stand()
// [RLVa:KB] - Checked: 2010-08-29 (RLVa-1.1.3b) | Added: RLVa-1.2.1c | OK
if ( (gRlvHandler.hasBehaviour(RLV_BHVR_STANDTP)) && (gAgent.getAvatarObject()) )
{
if (gAgent.getAvatarObject()->mIsSitting)
if (gAgent.getAvatarObject()->isSitting())
{
if (gRlvHandler.canStand())
gAgent.setControlFlags(AGENT_CONTROL_STAND_UP);
@@ -4075,7 +4075,7 @@ class LLWorldEnableFly : public view_listener_t
BOOL sitting = FALSE;
if (gAgent.getAvatarObject())
{
sitting = gAgent.getAvatarObject()->mIsSitting;
sitting = gAgent.getAvatarObject()->isSitting();
}
gMenuHolder->findControl(userdata["control"].asString())->setValue(!sitting);
return true;
@@ -5158,7 +5158,7 @@ BOOL sitting_on_selection()
return FALSE;
}
return (avatar->mIsSitting && avatar->getRoot() == root_object);
return (avatar->isSitting() && avatar->getRoot() == root_object);
}
class LLToolsSaveToInventory : public view_listener_t
@@ -6004,7 +6004,7 @@ class LLWorldSitOnGround : public view_listener_t
{
if (gAgent.getAvatarObject())
{
if(!gAgent.getAvatarObject()->mIsSitting)
if(!gAgent.getAvatarObject()->isSitting())
{
gAgent.setControlFlags(AGENT_CONTROL_SIT_ON_GROUND);
}

View File

@@ -4945,7 +4945,7 @@ void process_avatar_sit_response(LLMessageSystem *mesgsys, void **user_data)
if (object)
{
LLVector3 sit_spot = object->getPositionAgent() + (sitPosition * object->getRotation());
if (!use_autopilot || (avatar && avatar->mIsSitting && avatar->getRoot() == object->getRoot()))
if (!use_autopilot || (avatar && avatar->isSitting() && avatar->getRoot() == object->getRoot()))
{
//we're already sitting on this object, so don't autopilot
}

View File

@@ -340,7 +340,9 @@ void LLViewerShaderMgr::setShaders()
S32 deferred_class = 0;
if (LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
gSavedSettings.getBOOL("RenderDeferred"))
gSavedSettings.getBOOL("RenderDeferred") &&
LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders") &&
gSavedSettings.getBOOL("WindLightUseAtmosShaders"))
{
if (gSavedSettings.getS32("RenderShadowDetail") > 0)
{
@@ -363,9 +365,6 @@ void LLViewerShaderMgr::setShaders()
//make sure hardware skinning is enabled
gSavedSettings.setBOOL("RenderAvatarVP", TRUE);
//make sure atmospheric shaders are enabled
gSavedSettings.setBOOL("WindLightUseAtmosShaders", TRUE);
}

View File

@@ -3385,7 +3385,7 @@ void LLViewerWindow::renderSelections( BOOL for_gl_pick, BOOL pick_parcel_walls,
((gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) || (gRlvHandler.hasBehaviour(RLV_BHVR_SITTP))) )
{
LLVOAvatar* pAvatar = gAgent.getAvatarObject();
if ( (pAvatar) && (pAvatar->mIsSitting) && (pAvatar->getRoot() == object->getRootEdit()) )
if ( (pAvatar) && (pAvatar->isSitting()) && (pAvatar->getRoot() == object->getRootEdit()) )
moveable_object_selected = this_object_movable = FALSE;
}
// [/RLVa:KB]

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -71,13 +71,29 @@ void LLWeb::loadURLExternal(const std::string& url)
// static
std::string LLWeb::curlEscape(const std::string& url)
{
static const char hex[] = "0123456789ABCDEF";
std::stringstream escaped_url;
for (std::string::const_iterator iter = url.begin(); iter != url.end(); ++iter)
{
if (isalnum(*iter))
escaped_url << *iter;
else
escaped_url << '%' << std::hex << std::setfill('0') << std::setw(2) << std::uppercase << (int)*iter;
switch(*iter) {
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
case 'a': case 'b': case 'c': case 'd': case 'e':
case 'f': case 'g': case 'h': case 'i': case 'j':
case 'k': case 'l': case 'm': case 'n': case 'o':
case 'p': case 'q': case 'r': case 's': case 't':
case 'u': case 'v': case 'w': case 'x': case 'y': case 'z':
case 'A': case 'B': case 'C': case 'D': case 'E':
case 'F': case 'G': case 'H': case 'I': case 'J':
case 'K': case 'L': case 'M': case 'N': case 'O':
case 'P': case 'Q': case 'R': case 'S': case 'T':
case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z':
escaped_url << (*iter);
break;
default:
unsigned char c = (unsigned char)(*iter);
escaped_url << '%' << hex[c>>4] << hex[c&0xF];
}
}
return escaped_url.str();
}

View File

@@ -602,6 +602,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
void LLPipeline::updateRenderDeferred()
{
sRenderDeferred = (gSavedSettings.getBOOL("RenderDeferred") &&
LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
LLRenderTarget::sUseFBO &&
LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
gSavedSettings.getBOOL("VertexShaderEnable") &&

View File

@@ -1430,7 +1430,7 @@ ERlvCmdRet RlvHandler::processForceCommand(const RlvCommand& rlvCmd) const
{
VERIFY_OPTION(rlvCmd.getOption().empty());
LLVOAvatar* pAvatar = gAgent.getAvatarObject();
if ( (pAvatar) && (pAvatar->mIsSitting) && (!hasBehaviourExcept(RLV_BHVR_UNSIT, rlvCmd.getObjectID())) )
if ( (pAvatar) && (pAvatar->isSitting()) && (!hasBehaviourExcept(RLV_BHVR_UNSIT, rlvCmd.getObjectID())) )
{
gAgent.setControlFlags(AGENT_CONTROL_STAND_UP);
send_agent_update(TRUE, TRUE); // See behaviour notes on why we have to force an agent update here
@@ -1577,7 +1577,7 @@ ERlvCmdRet RlvHandler::onForceSit(const RlvCommand& rlvCmd) const
return RLV_RET_FAILED_LOCK;
else if ( (hasBehaviour(RLV_BHVR_STANDTP)) && (gAgent.getAvatarObject()) )
{
if (gAgent.getAvatarObject()->mIsSitting)
if (gAgent.getAvatarObject()->isSitting())
return RLV_RET_FAILED_LOCK;
m_posSitSource = gAgent.getPositionGlobal();
}
@@ -1692,7 +1692,7 @@ ERlvCmdRet RlvHandler::processReplyCommand(const RlvCommand& rlvCmd) const
{
// NOTE: RLV 1.16.1 returns a NULL UUID if we're not sitting
LLVOAvatar* pAvatar = gAgent.getAvatarObject(); LLUUID idSitObj;
if ( (pAvatar) && (pAvatar->mIsSitting) )
if ( (pAvatar) && (pAvatar->isSitting()) )
{
// LLVOAvatar inherits from 2 classes so make sure we get the right vfptr
LLViewerObject* pAvatarObj = dynamic_cast<LLViewerObject*>(pAvatar), *pParent;

View File

@@ -243,7 +243,7 @@ inline bool RlvHandler::canSit(LLViewerObject* pObj, const LLVector3& posOffset
( (pObj) && (LL_PCODE_VOLUME == pObj->getPCode()) ) &&
(!hasBehaviour(RLV_BHVR_SIT)) &&
( ((!hasBehaviour(RLV_BHVR_UNSIT)) && (!hasBehaviour(RLV_BHVR_STANDTP))) ||
((gAgent.getAvatarObject()) && (!gAgent.getAvatarObject()->mIsSitting)) ) &&
((gAgent.getAvatarObject()) && (!gAgent.getAvatarObject()->isSitting())) ) &&
( ((NULL == getCurrentCommand() || (RLV_BHVR_SIT != getCurrentCommand()->getBehaviourType()))
? ((!hasBehaviour(RLV_BHVR_SITTP)) && (!hasBehaviour(RLV_BHVR_FARTOUCH))) // [regular sit]
: (!hasBehaviourExcept(RLV_BHVR_SITTP, getCurrentObject()))) || // [force sit]
@@ -254,7 +254,7 @@ inline bool RlvHandler::canSit(LLViewerObject* pObj, const LLVector3& posOffset
inline bool RlvHandler::canStand() const
{
// NOTE: return FALSE only if we're @unsit=n restricted and the avie is currently sitting on something and TRUE for everything else
return (!hasBehaviour(RLV_BHVR_UNSIT)) || ((gAgent.getAvatarObject()) && (!gAgent.getAvatarObject()->mIsSitting));
return (!hasBehaviour(RLV_BHVR_UNSIT)) || ((gAgent.getAvatarObject()) && (!gAgent.getAvatarObject()->isSitting()));
}
// Checked: 2010-12-11 (RLVa-1.2.2c) | Added: RLVa-1.2.2c

View File

@@ -69,6 +69,19 @@
mouse_opaque="true" name="vbo_stream" radio_style="false"
tool_tip="Disabling this may improve performance when VBOs are enabled. Disabling produced observable improvement on various AMD GPUs."
width="315" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
font="SansSerifSmall" h_pad="0" halign="left" height="12"
left="10" mouse_opaque="true" name="Enable FBO:" v_pad="0"
width="140">
Enable Framebuffer Objects:
</text>
<check_box bottom_delta="-5" control_name="RenderUseFBO" enabled="false" follows="left|top"
font="SansSerifSmall" height="16" initial_value="true"
label="Enable OpenGL Frame Buffer Objects" left="148"
mouse_opaque="true" name="fbo" radio_style="false"
tool_tip="Enabling this on modern hardware can provide a performance gain. However, enabling this when combined with antialiasing on AMD GPUs may cause edge artifacts. This setting is required for deferred rendering."
width="315" />
<slider bottom_delta="-21" can_edit_text="false" control_name="TextureMemory"
decimal_digits="0" enabled="true"
follows="left|top" height="16" increment="16"

View File

@@ -207,7 +207,7 @@
width="128">
Reflection Detail:
</text>
<combo_box bottom_delta="-20" control_name="RenderReflectionDetail" enabled = "true" follows="left|top"
<combo_box bottom_delta="-20" control_name="RenderReflectionDetail" enabled = "true" follows="left|top" label="Reflection Detail"
left_delta="-2" mouse_opaque="true" name="ReflectionDetailCombo" width="160" height="16">
<combo_item type="string" length="1" name="0" value="0">
Terrain and Trees

View File

@@ -495,6 +495,8 @@ class DarwinManifest(ViewerManifest):
self.path("vivox-runtime/universal-darwin/libortp.dylib", "libortp.dylib")
self.path("vivox-runtime/universal-darwin/libvivoxsdk.dylib", "libvivoxsdk.dylib")
self.path("vivox-runtime/universal-darwin/SLVoice", "SLVoice")
self.path("../llcommon/" + self.args['configuration'] + "/libllcommon.dylib", "libllcommon.dylib")
libfile = "lib%s.dylib"
libdir = "../../libraries/universal-darwin/lib_release"