From 55612611c679efda5d491944dee75f4768749277 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Tue, 30 May 2017 22:03:43 +0100 Subject: SL-694 - stub support for ObjectAnimation message type --- indra/newview/llviewermessage.cpp | 63 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 3 deletions(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 507087d1ae..6a6e932b4a 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -103,6 +103,7 @@ #include "llviewerwindow.h" #include "llvlmanager.h" #include "llvoavatarself.h" +#include "llvovolume.h" #include "llworld.h" #include "pipeline.h" #include "llfloaterworldmap.h" @@ -4976,12 +4977,15 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data) LLUUID animation_id; LLUUID uuid; S32 anim_sequence_id; - LLVOAvatar *avatarp; + LLVOAvatar *avatarp = NULL; mesgsys->getUUIDFast(_PREHASH_Sender, _PREHASH_ID, uuid); - //clear animation flags - avatarp = (LLVOAvatar *)gObjectList.findObject(uuid); + LLViewerObject *objp = gObjectList.findObject(uuid); + if (objp) + { + avatarp = objp->asAvatar(); + } if (!avatarp) { @@ -4993,6 +4997,7 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data) S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationList); S32 num_source_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationSourceList); + //clear animation flags avatarp->mSignaledAnimations.clear(); if (avatarp->isSelf()) @@ -5063,6 +5068,58 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data) } } +void process_object_animation(LLMessageSystem *mesgsys, void **user_data) +{ + LLUUID animation_id; + LLUUID uuid; +#if 0 + S32 anim_sequence_id; +#endif + + mesgsys->getUUIDFast(_PREHASH_Sender, _PREHASH_ID, uuid); + + LLViewerObject *objp = gObjectList.findObject(uuid); + if (!objp) + { + LL_WARNS("Messaging") << "Received animation state for unknown object" << uuid << LL_ENDL; + return; + } + + LLVOVolume *volp = dynamic_cast(objp); + if (!volp) + { + LL_WARNS("Messaging") << "Received animation state for non-volume object" << uuid << LL_ENDL; + return; + } + + if (!volp->isAnimatedMesh()) + { + LL_WARNS("Messaging") << "Received animation state for non-animated object" << uuid << LL_ENDL; + return; + } + + LL_WARNS() << "ADD SUPPORT FOR OBJECT ANIMATION HERE" << LL_ENDL; +#if 0 + S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationList); + S32 num_source_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationSourceList); + + avatarp->mSignaledAnimations.clear(); + + for( S32 i = 0; i < num_blocks; i++ ) + { + mesgsys->getUUIDFast(_PREHASH_AnimationList, _PREHASH_AnimID, animation_id, i); + mesgsys->getS32Fast(_PREHASH_AnimationList, _PREHASH_AnimSequenceID, anim_sequence_id, i); + avatarp->mSignaledAnimations[animation_id] = anim_sequence_id; + } + + if (num_blocks) + { + avatarp->processAnimationStateChanges(); + } +#endif +} + + void process_avatar_appearance(LLMessageSystem *mesgsys, void **user_data) { LLUUID uuid; -- cgit v1.2.3 From 74957676fc0b05825abc3af907241479f06fa8c3 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Mon, 5 Jun 2017 20:22:59 +0100 Subject: SL-694 - message changes for ObjectAnimation, more logging to validate behavior --- indra/newview/llviewermessage.cpp | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 6a6e932b4a..2b62ccd62f 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5072,51 +5072,50 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) { LLUUID animation_id; LLUUID uuid; -#if 0 S32 anim_sequence_id; -#endif mesgsys->getUUIDFast(_PREHASH_Sender, _PREHASH_ID, uuid); LLViewerObject *objp = gObjectList.findObject(uuid); if (!objp) { - LL_WARNS("Messaging") << "Received animation state for unknown object" << uuid << LL_ENDL; + LL_WARNS("Messaging") << "AXON Received animation state for unknown object" << uuid << LL_ENDL; return; } LLVOVolume *volp = dynamic_cast(objp); if (!volp) { - LL_WARNS("Messaging") << "Received animation state for non-volume object" << uuid << LL_ENDL; + LL_WARNS("Messaging") << "AXON Received animation state for non-volume object" << uuid << LL_ENDL; return; } if (!volp->isAnimatedMesh()) { - LL_WARNS("Messaging") << "Received animation state for non-animated object" << uuid << LL_ENDL; + LL_WARNS("Messaging") << "AXON Received animation state for non-animated object" << uuid << LL_ENDL; return; } - LL_WARNS() << "ADD SUPPORT FOR OBJECT ANIMATION HERE" << LL_ENDL; -#if 0 S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationList); - S32 num_source_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationSourceList); + LL_WARNS() << "AXON handle object animation here, num_blocks " << num_blocks << LL_ENDL; - avatarp->mSignaledAnimations.clear(); + //avatarp->mSignaledAnimations.clear(); + volp->setDebugText(llformat("Animations %d", num_blocks)); for( S32 i = 0; i < num_blocks; i++ ) { mesgsys->getUUIDFast(_PREHASH_AnimationList, _PREHASH_AnimID, animation_id, i); mesgsys->getS32Fast(_PREHASH_AnimationList, _PREHASH_AnimSequenceID, anim_sequence_id, i); - avatarp->mSignaledAnimations[animation_id] = anim_sequence_id; + //avatarp->mSignaledAnimations[animation_id] = anim_sequence_id; + LL_INFOS() << "AXON got object animation request for object " + << uuid << " animation id " << animation_id << LL_ENDL; } if (num_blocks) { - avatarp->processAnimationStateChanges(); + LL_INFOS() << "AXON process animation state changes here" << LL_ENDL; + //avatarp->processAnimationStateChanges(); } -#endif } -- cgit v1.2.3 From c9baf4c66157c601cc4d4e325c7843b3bf9a0cad Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Wed, 7 Jun 2017 14:23:49 +0100 Subject: SL-691,SL-694 - viewer can animate objects based on server messaging. First end-to-end demo for animated objects. --- indra/newview/llviewermessage.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 2b62ccd62f..7fd87f99d3 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -55,6 +55,7 @@ #include "llagentcamera.h" #include "llcallingcard.h" #include "llbuycurrencyhtml.h" +#include "llcontrolavatar.h" #include "llfirstuse.h" #include "llfloaterbump.h" #include "llfloaterbuyland.h" @@ -5099,22 +5100,28 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationList); LL_WARNS() << "AXON handle object animation here, num_blocks " << num_blocks << LL_ENDL; - //avatarp->mSignaledAnimations.clear(); + LLControlAvatar *avatarp = volp->mControlAvatar; + if (!avatarp->mPlaying) + { + avatarp->mPlaying = true; + avatarp->updateGeom(volp); + } + avatarp->mSignaledAnimations.clear(); volp->setDebugText(llformat("Animations %d", num_blocks)); for( S32 i = 0; i < num_blocks; i++ ) { mesgsys->getUUIDFast(_PREHASH_AnimationList, _PREHASH_AnimID, animation_id, i); mesgsys->getS32Fast(_PREHASH_AnimationList, _PREHASH_AnimSequenceID, anim_sequence_id, i); - //avatarp->mSignaledAnimations[animation_id] = anim_sequence_id; + avatarp->mSignaledAnimations[animation_id] = anim_sequence_id; LL_INFOS() << "AXON got object animation request for object " << uuid << " animation id " << animation_id << LL_ENDL; } - if (num_blocks) + if (num_blocks >= 0) { LL_INFOS() << "AXON process animation state changes here" << LL_ENDL; - //avatarp->processAnimationStateChanges(); + avatarp->processAnimationStateChanges(); } } -- cgit v1.2.3 From c5dc0ee36e8d17fd0cf25f5a1fbdfb8609a64ee0 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Fri, 9 Jun 2017 21:13:54 +0100 Subject: SL-704 - code cleanup --- indra/newview/llviewermessage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 7fd87f99d3..db237d30ea 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5091,7 +5091,7 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) return; } - if (!volp->isAnimatedMesh()) + if (!volp->isAnimatedObject()) { LL_WARNS("Messaging") << "AXON Received animation state for non-animated object" << uuid << LL_ENDL; return; -- cgit v1.2.3 From b2a06578187af5446b5e24379abc8764f0cd731f Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Fri, 16 Jun 2017 16:03:06 +0100 Subject: SL-697 - global scale function for LLControlAvatar, to support arbitrary scaling of animated objects. Not currently used. --- indra/newview/llviewermessage.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index db237d30ea..f359c1455f 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5097,10 +5097,16 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) return; } + LLControlAvatar *avatarp = volp->mControlAvatar; + if (!avatarp) + { + LL_WARNS() << "AXON no control avatar, ignoring" << LL_ENDL; + return; + } + S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationList); LL_WARNS() << "AXON handle object animation here, num_blocks " << num_blocks << LL_ENDL; - LLControlAvatar *avatarp = volp->mControlAvatar; if (!avatarp->mPlaying) { avatarp->mPlaying = true; -- cgit v1.2.3 From e0d6a6a40192caa5b9d62165da5f23a5ade6e4b0 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Mon, 19 Jun 2017 20:44:04 +0100 Subject: SL-725 - suppress default animations for LLControlAvatar, using a new mEnableDefaultAnimations field --- indra/newview/llviewermessage.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index f359c1455f..df69d6d197 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5113,7 +5113,6 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) avatarp->updateGeom(volp); } avatarp->mSignaledAnimations.clear(); - volp->setDebugText(llformat("Animations %d", num_blocks)); for( S32 i = 0; i < num_blocks; i++ ) { -- cgit v1.2.3 From 4907e437c1a9523e3b3d098403da8c780c6345f9 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Tue, 20 Jun 2017 15:04:11 +0100 Subject: SL-731 - control avatar has pointer back to associated volume. Can use this link to find associated inventory item name for an animation in debug display. --- indra/newview/llviewermessage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index df69d6d197..ff33fe79fa 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5110,7 +5110,7 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) if (!avatarp->mPlaying) { avatarp->mPlaying = true; - avatarp->updateGeom(volp); + avatarp->updateVolumeGeom(); } avatarp->mSignaledAnimations.clear(); -- cgit v1.2.3 From b6aedb116f60b9e4823f61b945b3f374d9267c1d Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Tue, 27 Jun 2017 14:15:42 +0100 Subject: SL-722 - in progress on managing animated object state with linksets --- indra/newview/llviewermessage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index ff33fe79fa..f8cdb5bf92 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5097,7 +5097,7 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) return; } - LLControlAvatar *avatarp = volp->mControlAvatar; + LLControlAvatar *avatarp = volp->getControlAvatar(); if (!avatarp) { LL_WARNS() << "AXON no control avatar, ignoring" << LL_ENDL; -- cgit v1.2.3 From a09cc5f4bb9ccf93db7233d0b1fd0142803b2f23 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Fri, 30 Jun 2017 20:49:23 +0100 Subject: SL-731 - added a hook for debug text specific to control avatars. Also renamed resetJointsOnDetach to removeAttachmentOverridesForObject to make the connection to addAttachmentOverridesForObject more obvious. --- indra/newview/llviewermessage.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index f8cdb5bf92..227c6afcb0 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5105,7 +5105,7 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) } S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationList); - LL_WARNS() << "AXON handle object animation here, num_blocks " << num_blocks << LL_ENDL; + LL_DEBUGS("AXON") << "handle object animation here, num_blocks " << num_blocks << LL_ENDL; if (!avatarp->mPlaying) { @@ -5119,13 +5119,13 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) mesgsys->getUUIDFast(_PREHASH_AnimationList, _PREHASH_AnimID, animation_id, i); mesgsys->getS32Fast(_PREHASH_AnimationList, _PREHASH_AnimSequenceID, anim_sequence_id, i); avatarp->mSignaledAnimations[animation_id] = anim_sequence_id; - LL_INFOS() << "AXON got object animation request for object " + LL_DEBUGS("AXON") << "got object animation request for object " << uuid << " animation id " << animation_id << LL_ENDL; } if (num_blocks >= 0) { - LL_INFOS() << "AXON process animation state changes here" << LL_ENDL; + LL_DEBUGS("AXON") << "process animation state changes here" << LL_ENDL; avatarp->processAnimationStateChanges(); } } -- cgit v1.2.3 From f55667397e75991348fa25b6ad581a36de99acf0 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Thu, 6 Jul 2017 01:25:10 +0100 Subject: SL-722 - handle per-object animation requests, combine for control avatar animation state. --- indra/newview/llviewermessage.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 227c6afcb0..ba4c632586 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5112,22 +5112,19 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) avatarp->mPlaying = true; avatarp->updateVolumeGeom(); } - avatarp->mSignaledAnimations.clear(); + + volp->mObjectSignaledAnimations.clear(); for( S32 i = 0; i < num_blocks; i++ ) { mesgsys->getUUIDFast(_PREHASH_AnimationList, _PREHASH_AnimID, animation_id, i); mesgsys->getS32Fast(_PREHASH_AnimationList, _PREHASH_AnimSequenceID, anim_sequence_id, i); - avatarp->mSignaledAnimations[animation_id] = anim_sequence_id; + volp->mObjectSignaledAnimations[animation_id] = anim_sequence_id; LL_DEBUGS("AXON") << "got object animation request for object " - << uuid << " animation id " << animation_id << LL_ENDL; + << uuid << " animation id " << animation_id << LL_ENDL; } - if (num_blocks >= 0) - { - LL_DEBUGS("AXON") << "process animation state changes here" << LL_ENDL; - avatarp->processAnimationStateChanges(); - } + avatarp->updateAnimations(); } -- cgit v1.2.3 From c025939e42d4c26054ff4a6eeded4b7849c74070 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Fri, 27 Oct 2017 15:10:26 +0100 Subject: MAINT-7857 - shadow fix for animated objects. --- indra/newview/llviewermessage.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 70202e4bc6..fad59aadf4 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5075,6 +5075,18 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data) } } +// AXON Move to llviewerobject +void recursiveMarkForUpdate(LLViewerObject *vobj, BOOL priority) +{ + for (LLViewerObject::child_list_t::const_iterator iter = vobj->getChildren().begin(); + iter != vobj->getChildren().end(); iter++) + { + LLViewerObject* child = (LLViewerObject*)*iter; + child->markForUpdate(priority); + } + vobj->markForUpdate(priority); +} + void process_object_animation(LLMessageSystem *mesgsys, void **user_data) { LLUUID animation_id; @@ -5113,11 +5125,32 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationList); LL_DEBUGS("AXON") << "handle object animation here, num_blocks " << num_blocks << LL_ENDL; +#if 1 if (!avatarp->mPlaying) { avatarp->mPlaying = true; avatarp->updateVolumeGeom(); + recursiveMarkForUpdate(avatarp->mRootVolp,TRUE); } +#else + if (num_blocks > 0 && !avatarp->mPlaying) + { + avatarp->mPlaying = true; + avatarp->updateVolumeGeom(); + // AXON FIXME need to update all objects in the linkset, not just the one where animation is playing + recursiveMarkForUpdate(avatarp->mRootVolp,TRUE); + } + else if (num_blocks == 0 && avatarp->mPlaying) + { + // AXON this will cause meshes to go back to static when no + // animations are signalled. Probably don't want to leave this + // way but helpful for testing. + avatarp->mPlaying = false; + avatarp->updateVolumeGeom(); + // AXON FIXME need to update all objects in the linkset, not just the one where animation is playing + recursiveMarkForUpdate(avatarp->mRootVolp,TRUE); + } +#endif volp->mObjectSignaledAnimations.clear(); -- cgit v1.2.3 From ef0e3bfdd92bb5faea633a14487f123dfeb2f5f1 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Fri, 27 Oct 2017 21:27:36 +0100 Subject: SL-731, SL-779 - more diagnostics for DebugAnimatedObjects, fixed a problem with recursiveMarkForUpdate --- indra/newview/llviewermessage.cpp | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index fad59aadf4..3834082f78 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5075,18 +5075,6 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data) } } -// AXON Move to llviewerobject -void recursiveMarkForUpdate(LLViewerObject *vobj, BOOL priority) -{ - for (LLViewerObject::child_list_t::const_iterator iter = vobj->getChildren().begin(); - iter != vobj->getChildren().end(); iter++) - { - LLViewerObject* child = (LLViewerObject*)*iter; - child->markForUpdate(priority); - } - vobj->markForUpdate(priority); -} - void process_object_animation(LLMessageSystem *mesgsys, void **user_data) { LLUUID animation_id; @@ -5123,14 +5111,14 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) } S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationList); - LL_DEBUGS("AXON") << "handle object animation here, num_blocks " << num_blocks << LL_ENDL; + LL_DEBUGS("AXON") << "processing object animation requests, num_blocks " << num_blocks << LL_ENDL; -#if 1 +#if 0 if (!avatarp->mPlaying) { avatarp->mPlaying = true; avatarp->updateVolumeGeom(); - recursiveMarkForUpdate(avatarp->mRootVolp,TRUE); + avatarp->mRootVolp->recursiveMarkForUpdate(TRUE); } #else if (num_blocks > 0 && !avatarp->mPlaying) @@ -5138,7 +5126,7 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) avatarp->mPlaying = true; avatarp->updateVolumeGeom(); // AXON FIXME need to update all objects in the linkset, not just the one where animation is playing - recursiveMarkForUpdate(avatarp->mRootVolp,TRUE); + avatarp->mRootVolp->recursiveMarkForUpdate(TRUE); } else if (num_blocks == 0 && avatarp->mPlaying) { @@ -5148,7 +5136,7 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) avatarp->mPlaying = false; avatarp->updateVolumeGeom(); // AXON FIXME need to update all objects in the linkset, not just the one where animation is playing - recursiveMarkForUpdate(avatarp->mRootVolp,TRUE); + avatarp->mRootVolp->recursiveMarkForUpdate(TRUE); } #endif -- cgit v1.2.3 From ae40b68ba7fb9ea9c308c0dcb01d19e3d218aeaa Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Wed, 1 Nov 2017 22:07:42 +0100 Subject: SL-830, SL-831 - no linking if any of the roots is animated object. isAnimatedObject() just uses check against extended mesh flag of the root. On select, LLVOVolume marks whole linkset for update if animated object. --- indra/newview/llviewermessage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 3834082f78..0f567ba5ac 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5113,7 +5113,7 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationList); LL_DEBUGS("AXON") << "processing object animation requests, num_blocks " << num_blocks << LL_ENDL; -#if 0 +#if 1 if (!avatarp->mPlaying) { avatarp->mPlaying = true; -- cgit v1.2.3 From e8fe39f33266c96797ca976978b24bf9cd778f8c Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Mon, 6 Nov 2017 14:02:38 +0000 Subject: SL-830 - more diagnostics and possible fixes around corrupted graphics state --- indra/newview/llviewermessage.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 0f567ba5ac..9de8c81c2b 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5124,9 +5124,12 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) if (num_blocks > 0 && !avatarp->mPlaying) { avatarp->mPlaying = true; - avatarp->updateVolumeGeom(); - // AXON FIXME need to update all objects in the linkset, not just the one where animation is playing - avatarp->mRootVolp->recursiveMarkForUpdate(TRUE); + // AXON need to update all objects in the linkset, not just the one where animation is playing + if (!avatarp->mRootVolp->isAnySelected()) + { + avatarp->updateVolumeGeom(); + avatarp->mRootVolp->recursiveMarkForUpdate(TRUE); + } } else if (num_blocks == 0 && avatarp->mPlaying) { @@ -5134,9 +5137,12 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) // animations are signalled. Probably don't want to leave this // way but helpful for testing. avatarp->mPlaying = false; - avatarp->updateVolumeGeom(); - // AXON FIXME need to update all objects in the linkset, not just the one where animation is playing - avatarp->mRootVolp->recursiveMarkForUpdate(TRUE); + // AXON need to update all objects in the linkset, not just the one where animation is playing + if (!avatarp->mRootVolp->isAnySelected()) + { + avatarp->updateVolumeGeom(); + avatarp->mRootVolp->recursiveMarkForUpdate(TRUE); + } } #endif -- cgit v1.2.3 From 14f429329f5e9c570ff4e79f177f3bb8d0471252 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Tue, 7 Nov 2017 13:20:04 +0000 Subject: SL-830 - fix for previously selected animated objects disappearing when going static --- indra/newview/llviewermessage.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 9de8c81c2b..0b2931886a 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5114,6 +5114,9 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) LL_DEBUGS("AXON") << "processing object animation requests, num_blocks " << num_blocks << LL_ENDL; #if 1 + // Here we go into skinned mode once, the first time we get an + // animation request, and then stay there. This is probably the + // normally desired behavior. if (!avatarp->mPlaying) { avatarp->mPlaying = true; @@ -5121,6 +5124,9 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) avatarp->mRootVolp->recursiveMarkForUpdate(TRUE); } #else + // AXON + // In this block we switch back into static mode when no animations are + // playing. This is mostly useful for debugging. if (num_blocks > 0 && !avatarp->mPlaying) { avatarp->mPlaying = true; @@ -5133,9 +5139,6 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) } else if (num_blocks == 0 && avatarp->mPlaying) { - // AXON this will cause meshes to go back to static when no - // animations are signalled. Probably don't want to leave this - // way but helpful for testing. avatarp->mPlaying = false; // AXON need to update all objects in the linkset, not just the one where animation is playing if (!avatarp->mRootVolp->isAnySelected()) -- cgit v1.2.3 From 2f1b75f03e8066b54d9dae16ab29095752c4ee8a Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Thu, 16 Nov 2017 19:24:53 +0000 Subject: SL-704 - first pass cleaning up comments. Also added LLControlAvatar::initInstance() as a potential hook for optimizations. --- indra/newview/llviewermessage.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 0b2931886a..7260d7f928 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5106,7 +5106,7 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) LLControlAvatar *avatarp = volp->getControlAvatar(); if (!avatarp) { - LL_WARNS() << "AXON no control avatar, ignoring" << LL_ENDL; + LL_WARNS("Messaging") << "AXON no control avatar, ignoring" << LL_ENDL; return; } @@ -5120,17 +5120,19 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) if (!avatarp->mPlaying) { avatarp->mPlaying = true; - avatarp->updateVolumeGeom(); - avatarp->mRootVolp->recursiveMarkForUpdate(TRUE); + if (!avatarp->mRootVolp->isAnySelected()) + { + avatarp->updateVolumeGeom(); + avatarp->mRootVolp->recursiveMarkForUpdate(TRUE); + } } #else - // AXON + // AXON REMOVE BEFORE RELEASE? // In this block we switch back into static mode when no animations are // playing. This is mostly useful for debugging. if (num_blocks > 0 && !avatarp->mPlaying) { avatarp->mPlaying = true; - // AXON need to update all objects in the linkset, not just the one where animation is playing if (!avatarp->mRootVolp->isAnySelected()) { avatarp->updateVolumeGeom(); @@ -5140,7 +5142,6 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) else if (num_blocks == 0 && avatarp->mPlaying) { avatarp->mPlaying = false; - // AXON need to update all objects in the linkset, not just the one where animation is playing if (!avatarp->mRootVolp->isAnySelected()) { avatarp->updateVolumeGeom(); -- cgit v1.2.3 From 64e5cfc05452993bf15a31d9d4a0deeb1414edf0 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Thu, 16 Nov 2017 20:00:38 +0000 Subject: SL-704 - more cleanup, including releaseMeshData() for control avatars, which don't need mesh data. --- indra/newview/llviewermessage.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 7260d7f928..ae9798b5d5 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5126,8 +5126,7 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) avatarp->mRootVolp->recursiveMarkForUpdate(TRUE); } } -#else - // AXON REMOVE BEFORE RELEASE? +#else// AXON REMOVE BEFORE RELEASE? // In this block we switch back into static mode when no animations are // playing. This is mostly useful for debugging. if (num_blocks > 0 && !avatarp->mPlaying) -- cgit v1.2.3 From 0d2d6b42baa4fc6d253c5499324ffe5572676d87 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Fri, 1 Dec 2017 14:15:34 +0000 Subject: SL-704, SL-759 - support for impostoring of animated objects, comment and code cleanup --- indra/newview/llviewermessage.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 24af491391..bfaad30fc1 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5086,32 +5086,32 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) LLViewerObject *objp = gObjectList.findObject(uuid); if (!objp) { - LL_WARNS("Messaging") << "AXON Received animation state for unknown object" << uuid << LL_ENDL; + LL_WARNS("Messaging") << "Received animation state for unknown object" << uuid << LL_ENDL; return; } LLVOVolume *volp = dynamic_cast(objp); if (!volp) { - LL_WARNS("Messaging") << "AXON Received animation state for non-volume object" << uuid << LL_ENDL; + LL_WARNS("Messaging") << "Received animation state for non-volume object" << uuid << LL_ENDL; return; } if (!volp->isAnimatedObject()) { - LL_WARNS("Messaging") << "AXON Received animation state for non-animated object" << uuid << LL_ENDL; + LL_WARNS("Messaging") << "Received animation state for non-animated object" << uuid << LL_ENDL; return; } LLControlAvatar *avatarp = volp->getControlAvatar(); if (!avatarp) { - LL_WARNS("Messaging") << "AXON no control avatar, ignoring" << LL_ENDL; + LL_WARNS("Messaging") << "Received animation request for object with no control avatar, ignoring" << LL_ENDL; return; } S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationList); - LL_DEBUGS("AXON") << "processing object animation requests, num_blocks " << num_blocks << LL_ENDL; + LL_DEBUGS("AnimatedObjects") << "processing object animation requests, num_blocks " << num_blocks << LL_ENDL; #if 1 // Here we go into skinned mode once, the first time we get an @@ -5156,8 +5156,8 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) mesgsys->getUUIDFast(_PREHASH_AnimationList, _PREHASH_AnimID, animation_id, i); mesgsys->getS32Fast(_PREHASH_AnimationList, _PREHASH_AnimSequenceID, anim_sequence_id, i); volp->mObjectSignaledAnimations[animation_id] = anim_sequence_id; - LL_DEBUGS("AXON") << "got object animation request for object " - << uuid << " animation id " << animation_id << LL_ENDL; + LL_DEBUGS("AnimatedObjects") << "got object animation request for object " + << uuid << " animation id " << animation_id << LL_ENDL; } avatarp->updateAnimations(); -- cgit v1.2.3 From 095dd1b800d82a0fc97177a6fb668ddc72943613 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Thu, 21 Dec 2017 20:03:56 +0000 Subject: SL-859 - create control avatar if needed when animation request received --- indra/newview/llviewermessage.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index bfaad30fc1..46dcf06ebd 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5103,6 +5103,7 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) return; } + volp->updateControlAvatar(); LLControlAvatar *avatarp = volp->getControlAvatar(); if (!avatarp) { -- cgit v1.2.3 From e1cf4137938638b3232eb5a59c7544b2ec043b0b Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Thu, 4 Jan 2018 15:06:40 +0000 Subject: SL-859 - debug logging --- indra/newview/llviewermessage.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 46dcf06ebd..31cbaf6ac5 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -4997,7 +4997,7 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data) if (!avatarp) { // no agent by this ID...error? - LL_WARNS("Messaging") << "Received animation state for unknown avatar" << uuid << LL_ENDL; + LL_WARNS("Messaging") << "Received animation state for unknown avatar " << uuid << LL_ENDL; return; } @@ -5083,23 +5083,25 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) mesgsys->getUUIDFast(_PREHASH_Sender, _PREHASH_ID, uuid); + LL_DEBUGS("AnimatedObjects") << "Received animation state for object " << uuid << LL_ENDL; + LLViewerObject *objp = gObjectList.findObject(uuid); if (!objp) { - LL_WARNS("Messaging") << "Received animation state for unknown object" << uuid << LL_ENDL; + LL_WARNS("Messaging") << "Received animation state for unknown object " << uuid << LL_ENDL; return; } LLVOVolume *volp = dynamic_cast(objp); if (!volp) { - LL_WARNS("Messaging") << "Received animation state for non-volume object" << uuid << LL_ENDL; + LL_WARNS("Messaging") << "Received animation state for non-volume object " << uuid << LL_ENDL; return; } if (!volp->isAnimatedObject()) { - LL_WARNS("Messaging") << "Received animation state for non-animated object" << uuid << LL_ENDL; + LL_WARNS("Messaging") << "Received animation state for non-animated object " << uuid << LL_ENDL; return; } -- cgit v1.2.3 From 26add5700d88338b94ce891892948998b0468131 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Mon, 22 Jan 2018 22:08:06 +0000 Subject: MAINT-8159 - animation state management during link/unlink commands --- indra/newview/llviewermessage.cpp | 36 ------------------------------------ 1 file changed, 36 deletions(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 31eda85828..29fb5dcd53 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5116,42 +5116,6 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationList); LL_DEBUGS("AnimatedObjects") << "processing object animation requests, num_blocks " << num_blocks << LL_ENDL; -#if 1 - // Here we go into skinned mode once, the first time we get an - // animation request, and then stay there. This is probably the - // normally desired behavior. - if (!avatarp->mPlaying) - { - avatarp->mPlaying = true; - if (!avatarp->mRootVolp->isAnySelected()) - { - avatarp->updateVolumeGeom(); - avatarp->mRootVolp->recursiveMarkForUpdate(TRUE); - } - } -#else// AXON REMOVE BEFORE RELEASE? - // In this block we switch back into static mode when no animations are - // playing. This is mostly useful for debugging. - if (num_blocks > 0 && !avatarp->mPlaying) - { - avatarp->mPlaying = true; - if (!avatarp->mRootVolp->isAnySelected()) - { - avatarp->updateVolumeGeom(); - avatarp->mRootVolp->recursiveMarkForUpdate(TRUE); - } - } - else if (num_blocks == 0 && avatarp->mPlaying) - { - avatarp->mPlaying = false; - if (!avatarp->mRootVolp->isAnySelected()) - { - avatarp->updateVolumeGeom(); - avatarp->mRootVolp->recursiveMarkForUpdate(TRUE); - } - } -#endif - volp->mObjectSignaledAnimations.clear(); for( S32 i = 0; i < num_blocks; i++ ) -- cgit v1.2.3 From 5af9ce5737903aa730db47733fbb0e164d87eaf4 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Fri, 23 Feb 2018 20:30:38 +0000 Subject: MAINT-8264 - possible fix for yet another LOD stuck case --- indra/newview/llviewermessage.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 29fb5dcd53..201920ef54 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5116,6 +5116,16 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationList); LL_DEBUGS("AnimatedObjects") << "processing object animation requests, num_blocks " << num_blocks << LL_ENDL; + if (!avatarp->mPlaying) + { + avatarp->mPlaying = true; + if (!avatarp->mRootVolp->isAnySelected()) + { + avatarp->updateVolumeGeom(); + avatarp->mRootVolp->recursiveMarkForUpdate(TRUE); + } + } + volp->mObjectSignaledAnimations.clear(); for( S32 i = 0; i < num_blocks; i++ ) -- cgit v1.2.3 From 0608bce54bc818774a38403e2252e25fb54d7ed6 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Wed, 2 May 2018 21:33:46 +0100 Subject: MAINT-8608 - more detailed logging of issues with object animation requests. --- indra/newview/llviewermessage.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 16d306f997..05494b74f7 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5075,6 +5075,7 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data) } } +// AXON make logging less spammy after issues resolved, before release. void process_object_animation(LLMessageSystem *mesgsys, void **user_data) { LLUUID animation_id; @@ -5083,25 +5084,25 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) mesgsys->getUUIDFast(_PREHASH_Sender, _PREHASH_ID, uuid); - LL_DEBUGS("AnimatedObjects") << "Received animation state for object " << uuid << LL_ENDL; + LL_INFOS("AnimatedObjects") << "Received animation state for object " << uuid << LL_ENDL; LLViewerObject *objp = gObjectList.findObject(uuid); if (!objp) { - LL_WARNS("Messaging") << "Received animation state for unknown object " << uuid << LL_ENDL; + LL_WARNS("AnimatedObjects") << "Received animation state for unknown object " << uuid << LL_ENDL; return; } LLVOVolume *volp = dynamic_cast(objp); if (!volp) { - LL_WARNS("Messaging") << "Received animation state for non-volume object " << uuid << LL_ENDL; + LL_WARNS("AnimatedObjects") << "Received animation state for non-volume object " << uuid << LL_ENDL; return; } if (!volp->isAnimatedObject()) { - LL_WARNS("Messaging") << "Received animation state for non-animated object " << uuid << LL_ENDL; + LL_WARNS("AnimatedObjects") << "Received animation state for non-animated object " << uuid << LL_ENDL; return; } @@ -5109,12 +5110,12 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) LLControlAvatar *avatarp = volp->getControlAvatar(); if (!avatarp) { - LL_WARNS("Messaging") << "Received animation request for object with no control avatar, ignoring" << LL_ENDL; + LL_WARNS("AnimatedObjects") << "Received animation request for object with no control avatar, ignoring " << uuid << LL_ENDL; return; } S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationList); - LL_DEBUGS("AnimatedObjects") << "processing object animation requests, num_blocks " << num_blocks << LL_ENDL; + LL_INFOS("AnimatedObjects") << "processing object animation requests, num_blocks " << num_blocks << " uuid " << uuid << LL_ENDL; if (!avatarp->mPlaying) { @@ -5133,8 +5134,8 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) mesgsys->getUUIDFast(_PREHASH_AnimationList, _PREHASH_AnimID, animation_id, i); mesgsys->getS32Fast(_PREHASH_AnimationList, _PREHASH_AnimSequenceID, anim_sequence_id, i); volp->mObjectSignaledAnimations[animation_id] = anim_sequence_id; - LL_DEBUGS("AnimatedObjects") << "got object animation request for object " - << uuid << " animation id " << animation_id << LL_ENDL; + LL_INFOS("AnimatedObjects") << "added object animation request for object " + << uuid << " animation id " << animation_id << LL_ENDL; } avatarp->updateAnimations(); -- cgit v1.2.3 From 7ed17b5c2c11b9e57316c87b29524b88edb8f762 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Thu, 3 May 2018 22:42:02 +0100 Subject: MAINT-8608, MAINT-8539, MAINT-8615 - changes to make object animation info more persistent, tolerant to race conditions during initialization --- indra/newview/llviewermessage.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 05494b74f7..e8db01efed 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5075,6 +5075,7 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data) } } + // AXON make logging less spammy after issues resolved, before release. void process_object_animation(LLMessageSystem *mesgsys, void **user_data) { @@ -5085,6 +5086,19 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) mesgsys->getUUIDFast(_PREHASH_Sender, _PREHASH_ID, uuid); LL_INFOS("AnimatedObjects") << "Received animation state for object " << uuid << LL_ENDL; + + signaled_animation_map_t signaled_anims; + S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationList); + LL_INFOS("AnimatedObjects") << "processing object animation requests, num_blocks " << num_blocks << " uuid " << uuid << LL_ENDL; + for( S32 i = 0; i < num_blocks; i++ ) + { + mesgsys->getUUIDFast(_PREHASH_AnimationList, _PREHASH_AnimID, animation_id, i); + mesgsys->getS32Fast(_PREHASH_AnimationList, _PREHASH_AnimSequenceID, anim_sequence_id, i); + signaled_anims[animation_id] = anim_sequence_id; + LL_INFOS("AnimatedObjects") << "added signaled_anims animation request for object " + << uuid << " animation id " << animation_id << LL_ENDL; + } + LLObjectSignaledAnimationMap::instance().getMap()[uuid] = signaled_anims; LLViewerObject *objp = gObjectList.findObject(uuid); if (!objp) @@ -5114,9 +5128,6 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) return; } - S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationList); - LL_INFOS("AnimatedObjects") << "processing object animation requests, num_blocks " << num_blocks << " uuid " << uuid << LL_ENDL; - if (!avatarp->mPlaying) { avatarp->mPlaying = true; @@ -5127,17 +5138,6 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) } } - volp->mObjectSignaledAnimations.clear(); - - for( S32 i = 0; i < num_blocks; i++ ) - { - mesgsys->getUUIDFast(_PREHASH_AnimationList, _PREHASH_AnimID, animation_id, i); - mesgsys->getS32Fast(_PREHASH_AnimationList, _PREHASH_AnimSequenceID, anim_sequence_id, i); - volp->mObjectSignaledAnimations[animation_id] = anim_sequence_id; - LL_INFOS("AnimatedObjects") << "added object animation request for object " - << uuid << " animation id " << animation_id << LL_ENDL; - } - avatarp->updateAnimations(); } -- cgit v1.2.3 From 2a48816717087e07eb3f3855798c5dd71f541ee5 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Fri, 4 May 2018 21:18:13 +0100 Subject: MAINT-8608, MAINT-8539, MAINT-8615 - more animation state management - less log spam, more docs --- indra/newview/llviewermessage.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index e8db01efed..ba3e9e6993 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5085,17 +5085,17 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) mesgsys->getUUIDFast(_PREHASH_Sender, _PREHASH_ID, uuid); - LL_INFOS("AnimatedObjects") << "Received animation state for object " << uuid << LL_ENDL; + LL_DEBUGS("AnimatedObjectsNotify") << "Received animation state for object " << uuid << LL_ENDL; signaled_animation_map_t signaled_anims; S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationList); - LL_INFOS("AnimatedObjects") << "processing object animation requests, num_blocks " << num_blocks << " uuid " << uuid << LL_ENDL; + LL_DEBUGS("AnimatedObjectsNotify") << "processing object animation requests, num_blocks " << num_blocks << " uuid " << uuid << LL_ENDL; for( S32 i = 0; i < num_blocks; i++ ) { mesgsys->getUUIDFast(_PREHASH_AnimationList, _PREHASH_AnimID, animation_id, i); mesgsys->getS32Fast(_PREHASH_AnimationList, _PREHASH_AnimSequenceID, anim_sequence_id, i); signaled_anims[animation_id] = anim_sequence_id; - LL_INFOS("AnimatedObjects") << "added signaled_anims animation request for object " + LL_DEBUGS("AnimatedObjectsNotify") << "added signaled_anims animation request for object " << uuid << " animation id " << animation_id << LL_ENDL; } LLObjectSignaledAnimationMap::instance().getMap()[uuid] = signaled_anims; @@ -5103,20 +5103,20 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) LLViewerObject *objp = gObjectList.findObject(uuid); if (!objp) { - LL_WARNS("AnimatedObjects") << "Received animation state for unknown object " << uuid << LL_ENDL; + LL_DEBUGS("AnimatedObjectsNotify") << "Received animation state for unknown object " << uuid << LL_ENDL; return; } LLVOVolume *volp = dynamic_cast(objp); if (!volp) { - LL_WARNS("AnimatedObjects") << "Received animation state for non-volume object " << uuid << LL_ENDL; + LL_DEBUGS("AnimatedObjectsNotify") << "Received animation state for non-volume object " << uuid << LL_ENDL; return; } if (!volp->isAnimatedObject()) { - LL_WARNS("AnimatedObjects") << "Received animation state for non-animated object " << uuid << LL_ENDL; + LL_DEBUGS("AnimatedObjectsNotify") << "Received animation state for non-animated object " << uuid << LL_ENDL; return; } @@ -5124,7 +5124,7 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) LLControlAvatar *avatarp = volp->getControlAvatar(); if (!avatarp) { - LL_WARNS("AnimatedObjects") << "Received animation request for object with no control avatar, ignoring " << uuid << LL_ENDL; + LL_DEBUGS("AnimatedObjectsNotify") << "Received animation request for object with no control avatar, ignoring " << uuid << LL_ENDL; return; } -- cgit v1.2.3 From 56458152aca5a25663377fc9dde087de78bfb412 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Wed, 8 Aug 2018 22:11:32 +0100 Subject: SL-704 - code cleanup, mostly old AXON comments. --- indra/newview/llviewermessage.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 413596a514..dc11bc28e5 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -3995,7 +3995,6 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data) } -// AXON make logging less spammy after issues resolved, before release. void process_object_animation(LLMessageSystem *mesgsys, void **user_data) { LLUUID animation_id; -- cgit v1.2.3 From 963945b3ab258ea445e1d9757fc5a89ce397ff7b Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Tue, 25 Sep 2018 16:39:26 +0100 Subject: SL-1291 - fixed some issues with selection highlighting of objects rezzed while in build mode. Not clear whether this addresses the original issue, which isn't reproing --- indra/newview/llviewermessage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/llviewermessage.cpp') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index dc11bc28e5..b74c5b9b8a 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -4049,7 +4049,7 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data) if (!avatarp->mPlaying) { avatarp->mPlaying = true; - if (!avatarp->mRootVolp->isAnySelected()) + //if (!avatarp->mRootVolp->isAnySelected()) { avatarp->updateVolumeGeom(); avatarp->mRootVolp->recursiveMarkForUpdate(TRUE); -- cgit v1.2.3