From 4905d42add2de0d897591f136734b071650e70f8 Mon Sep 17 00:00:00 2001 From: McCabe Maxsted Date: Tue, 22 Sep 2009 22:23:51 -0700 Subject: Applied particle chat feature from Emerald viewer (tell an object it's selected on channel 9000) --- linden/indra/newview/app_settings/settings.xml | 11 +++++ linden/indra/newview/llvoavatar.cpp | 65 ++++++++++++++++++++++++++ linden/indra/newview/llvoavatar.h | 3 ++ 3 files changed, 79 insertions(+) (limited to 'linden') diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml index 194e95e..087c92f 100644 --- a/linden/indra/newview/app_settings/settings.xml +++ b/linden/indra/newview/app_settings/settings.xml @@ -5559,6 +5559,17 @@ Value 0 + ParticleChat + + Comment + Chat target of effect beam to channel 9000 + Persist + 1 + Type + Boolean + Value + 1 + PerAccountSettingsFile Comment diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp index 24272d8..431ef96 100644 --- a/linden/indra/newview/llvoavatar.cpp +++ b/linden/indra/newview/llvoavatar.cpp @@ -295,6 +295,9 @@ F32 LLVOAvatar::sUnbakedTime = 0.f; F32 LLVOAvatar::sUnbakedUpdateTime = 0.f; F32 LLVOAvatar::sGreyTime = 0.f; F32 LLVOAvatar::sGreyUpdateTime = 0.f; +LLVector3d LLVOAvatar::sBeamLastAt; +int LLVOAvatar::sPartsNow; + struct LLAvatarTexData { @@ -3445,6 +3448,26 @@ void LLVOAvatar::idleUpdateTractorBeam() if (!needsRenderBeam() || !mIsBuilt) { mBeam = NULL; + if(gSavedSettings.getBOOL("ParticleChat")) + { + if(sPartsNow != FALSE) + { + sPartsNow = FALSE; + LLMessageSystem* msg = gMessageSystem; + msg->newMessageFast(_PREHASH_ChatFromViewer); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + msg->nextBlockFast(_PREHASH_ChatData); + msg->addStringFast(_PREHASH_Message, "stop"); + msg->addU8Fast(_PREHASH_Type, CHAT_TYPE_WHISPER); + msg->addS32("Channel", 9000); + + gAgent.sendReliableMessage(); + sBeamLastAt = LLVector3d::zero; + LLViewerStats::getInstance()->incStat(LLViewerStats::ST_CHAT_COUNT); + } + } } else if (!mBeam || mBeam->isDead()) { @@ -3463,6 +3486,48 @@ void LLVOAvatar::idleUpdateTractorBeam() { // get point from pointat effect mBeam->setPositionGlobal(gAgent.mPointAt->getPointAtPosGlobal()); + + if(gSavedSettings.getBOOL("ParticleChat")) + { + if(sPartsNow != TRUE) + { + sPartsNow = TRUE; + LLMessageSystem* msg = gMessageSystem; + msg->newMessageFast(_PREHASH_ChatFromViewer); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + msg->nextBlockFast(_PREHASH_ChatData); + msg->addStringFast(_PREHASH_Message, "start"); + msg->addU8Fast(_PREHASH_Type, CHAT_TYPE_WHISPER); + msg->addS32("Channel", 9000); + + gAgent.sendReliableMessage(); + + LLViewerStats::getInstance()->incStat(LLViewerStats::ST_CHAT_COUNT); + } + //LLVector3d a = sBeamLastAt-gAgent.mPointAt->getPointAtPosGlobal(); + //if(a.length > 2) + if( (sBeamLastAt-gAgent.mPointAt->getPointAtPosGlobal()).length() > .2) + //if(sBeamLastAt!=gAgent.mPointAt->getPointAtPosGlobal()) + { + sBeamLastAt = gAgent.mPointAt->getPointAtPosGlobal(); + + LLMessageSystem* msg = gMessageSystem; + msg->newMessageFast(_PREHASH_ChatFromViewer); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + msg->nextBlockFast(_PREHASH_ChatData); + msg->addStringFast(_PREHASH_Message, llformat("<%.6f, %.6f, %.6f>",(F32)(sBeamLastAt.mdV[VX]),(F32)(sBeamLastAt.mdV[VY]),(F32)(sBeamLastAt.mdV[VZ]))); + msg->addU8Fast(_PREHASH_Type, CHAT_TYPE_WHISPER); + msg->addS32("Channel", 9000); // *TODO: make configurable + + gAgent.sendReliableMessage(); + } + + } + mBeam->triggerLocal(); } else if (selection->getFirstRootObject() && diff --git a/linden/indra/newview/llvoavatar.h b/linden/indra/newview/llvoavatar.h index 9806ceb..8607383 100644 --- a/linden/indra/newview/llvoavatar.h +++ b/linden/indra/newview/llvoavatar.h @@ -918,6 +918,9 @@ public: static F32 sGreyTime; // Total seconds with >=1 grey avatars static F32 sGreyUpdateTime; // Last time stats were updated (to prevent multiple updates per frame) + static int sPartsNow; + static LLVector3d sBeamLastAt; + //-------------------------------------------------------------------- // Texture Layer Sets and Global Colors //-------------------------------------------------------------------- -- cgit v1.1