From 7542f457cfd6ca0b9ebd9af8d4c03141ccddde11 Mon Sep 17 00:00:00 2001 From: Hazim Gazov Date: Mon, 10 May 2010 16:56:14 -0300 Subject: [PATCH] fix private lookat and pointat --- indra/newview/llglsandbox.cpp | 16 ++++--------- indra/newview/llhudeffectlookat.cpp | 36 +++++++++++++++++++++++++++++ indra/newview/llhudmanager.cpp | 1 + 3 files changed, 42 insertions(+), 11 deletions(-) diff --git a/indra/newview/llglsandbox.cpp b/indra/newview/llglsandbox.cpp index ec8076abe..cf1ff38ba 100644 --- a/indra/newview/llglsandbox.cpp +++ b/indra/newview/llglsandbox.cpp @@ -71,11 +71,12 @@ BOOL LLAgent::setLookAt(ELookAtType target_type, LLViewerObject *object, LLVector3 position) { - if (object && target_type != LOOKAT_TARGET_NONE && gSavedSettings.getBOOL("PrivateLookAt")) + if(gSavedSettings.getBOOL("PrivateLookAt")) { - target_type = LOOKAT_TARGET_NONE; - object = mAvatarObject; + if(!mLookAt || mLookAt->isDead()) + return FALSE; position.clearVec(); + return mLookAt->setLookAt(LOOKAT_TARGET_NONE, mAvatarObject, position); } if(object && object->isAttachment()) @@ -104,18 +105,11 @@ BOOL LLAgent::setLookAt(ELookAtType target_type, LLViewerObject *object, LLVecto BOOL LLAgent::setPointAt(EPointAtType target_type, LLViewerObject *object, LLVector3 position) { // disallow pointing at attachments and avatars - if (object && (object->isAttachment() || object->isAvatar())) + if (object && (object->isAttachment() || object->isAvatar()) || gSavedSettings.getBOOL("PrivateLookAt")) { return FALSE; } - if (object && target_type != POINTAT_TARGET_NONE && gSavedSettings.getBOOL("PrivateLookAt")) - { - target_type = POINTAT_TARGET_NONE; - object = NULL; - position.clearVec(); - } - if(!mPointAt || mPointAt->isDead()) { mPointAt = (LLHUDEffectPointAt *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_POINTAT); diff --git a/indra/newview/llhudeffectlookat.cpp b/indra/newview/llhudeffectlookat.cpp index 77461e8f0..45837fbb1 100644 --- a/indra/newview/llhudeffectlookat.cpp +++ b/indra/newview/llhudeffectlookat.cpp @@ -47,6 +47,12 @@ #include "llxmltree.h" +// +#include "llresmgr.h" +#include "llhudrender.h" +#include "llviewerwindow.h" +#include "llviewercontrol.h" +// BOOL LLHUDEffectLookAt::sDebugLookAt = FALSE; @@ -498,6 +504,8 @@ void LLHUDEffectLookAt::setSourceObject(LLViewerObject* objectp) //----------------------------------------------------------------------------- void LLHUDEffectLookAt::render() { + if (gSavedSettings.getBOOL("PrivateLookAt") && + (gAgent.getAvatarObject() == ((LLVOAvatar*)(LLViewerObject*)mSourceObject))) return; if (sDebugLookAt && mSourceObject.notNull()) { gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); @@ -521,6 +529,34 @@ void LLHUDEffectLookAt::render() gGL.vertex3f(0.f, 0.f, 1.f); } gGL.end(); gGL.popMatrix(); + // + const std::string text = ((LLVOAvatar*)(LLViewerObject*)mSourceObject)->getFullname(); + LLVector3 offset = gAgent.getCameraPositionAgent() - target; + offset.normalize(); + LLVector3 shadow_offset = offset * 0.49f; + offset *= 0.5f; + const LLFontGL* font = LLResMgr::getInstance()->getRes(LLFONT_SANSSERIF); + LLGLEnable gl_blend(GL_BLEND); + glPushMatrix(); + gViewerWindow->setupViewport(); + hud_render_utf8text(text, + target + shadow_offset, + *font, + LLFontGL::NORMAL, + -0.5f * font->getWidthF32(text) + 2.0f, + -2.0f, + LLColor4::black, + FALSE); + hud_render_utf8text(text, + target + offset, + *font, + LLFontGL::NORMAL, + -0.5f * font->getWidthF32(text), + 0.0f, + (*mAttentions)[mTargetType].mColor, + FALSE); + glPopMatrix(); + // } } diff --git a/indra/newview/llhudmanager.cpp b/indra/newview/llhudmanager.cpp index 955d78618..7d0ed57ef 100644 --- a/indra/newview/llhudmanager.cpp +++ b/indra/newview/llhudmanager.cpp @@ -79,6 +79,7 @@ void LLHUDManager::updateEffects() void LLHUDManager::sendEffects() { + if(!gSavedSettings.getBOOL("BroadcastViewerEffects"))return; S32 i; for (i = 0; i < mHUDEffects.count(); i++) {