diff options
| author | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2017-05-30 22:03:43 +0100 | 
|---|---|---|
| committer | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2017-05-30 22:03:43 +0100 | 
| commit | 55612611c679efda5d491944dee75f4768749277 (patch) | |
| tree | 244861bd6c8b63f4a68a87bfbac6da79373b94d9 | |
| parent | 4d68945595227b0f863a1c496be5da0f3c3c5113 (diff) | |
SL-694 - stub support for ObjectAnimation message type
| -rwxr-xr-x | etc/message.xml | 8 | ||||
| -rw-r--r-- | indra/llmessage/message_prehash.cpp | 1 | ||||
| -rw-r--r-- | indra/llmessage/message_prehash.h | 1 | ||||
| -rw-r--r-- | indra/newview/llstartup.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llviewermessage.cpp | 63 | ||||
| -rw-r--r-- | indra/newview/llviewermessage.h | 1 | ||||
| -rwxr-xr-x | scripts/messages/message_template.msg | 30 | ||||
| -rwxr-xr-x | scripts/messages/message_template.msg.sha1 | 2 | 
8 files changed, 101 insertions, 6 deletions
| diff --git a/etc/message.xml b/etc/message.xml index 6d8160abb5..b444fe6c11 100755 --- a/etc/message.xml +++ b/etc/message.xml @@ -236,6 +236,14 @@  					<boolean>false</boolean>  				</map> +				<key>ObjectAnimation</key> +				<map> +					<key>flavor</key> +					<string>template</string> +					<key>trusted-sender</key> +					<boolean>false</boolean> +				</map> +  				<key>AvatarAppearance</key>  				<map>  					<key>flavor</key> diff --git a/indra/llmessage/message_prehash.cpp b/indra/llmessage/message_prehash.cpp index 1ae8a6ac15..f8e11e324e 100644 --- a/indra/llmessage/message_prehash.cpp +++ b/indra/llmessage/message_prehash.cpp @@ -818,6 +818,7 @@ char const* const _PREHASH_StateSave = LLMessageStringTable::getInstance()->getS  char const* const _PREHASH_RoleData = LLMessageStringTable::getInstance()->getString("RoleData");  char const* const _PREHASH_AgentAnimation = LLMessageStringTable::getInstance()->getString("AgentAnimation");  char const* const _PREHASH_AvatarAnimation = LLMessageStringTable::getInstance()->getString("AvatarAnimation"); +char const* const _PREHASH_ObjectAnimation = LLMessageStringTable::getInstance()->getString("ObjectAnimation");  char const* const _PREHASH_LogDwellTime = LLMessageStringTable::getInstance()->getString("LogDwellTime");  char const* const _PREHASH_ParcelGodMarkAsContent = LLMessageStringTable::getInstance()->getString("ParcelGodMarkAsContent");  char const* const _PREHASH_UsePhysics = LLMessageStringTable::getInstance()->getString("UsePhysics"); diff --git a/indra/llmessage/message_prehash.h b/indra/llmessage/message_prehash.h index 7910fde305..334236fb25 100644 --- a/indra/llmessage/message_prehash.h +++ b/indra/llmessage/message_prehash.h @@ -818,6 +818,7 @@ extern char const* const _PREHASH_StateSave;  extern char const* const _PREHASH_RoleData;  extern char const* const _PREHASH_AgentAnimation;  extern char const* const _PREHASH_AvatarAnimation; +extern char const* const _PREHASH_ObjectAnimation;  extern char const* const _PREHASH_LogDwellTime;  extern char const* const _PREHASH_ParcelGodMarkAsContent;  extern char const* const _PREHASH_UsePhysics; diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 33b6352bf5..0c2fcdaf10 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -2384,6 +2384,7 @@ void register_viewer_callbacks(LLMessageSystem* msg)  	msg->setHandlerFuncFast(_PREHASH_NameValuePair,			process_name_value);  	msg->setHandlerFuncFast(_PREHASH_RemoveNameValuePair,	process_remove_name_value);  	msg->setHandlerFuncFast(_PREHASH_AvatarAnimation,		process_avatar_animation); +	msg->setHandlerFuncFast(_PREHASH_ObjectAnimation,		process_object_animation);  	msg->setHandlerFuncFast(_PREHASH_AvatarAppearance,		process_avatar_appearance);  	msg->setHandlerFuncFast(_PREHASH_CameraConstraint,		process_camera_constraint);  	msg->setHandlerFuncFast(_PREHASH_AvatarSitResponse,		process_avatar_sit_response); 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<LLVOVolume*>(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; diff --git a/indra/newview/llviewermessage.h b/indra/newview/llviewermessage.h index b0eaa37541..cef6f79812 100644 --- a/indra/newview/llviewermessage.h +++ b/indra/newview/llviewermessage.h @@ -95,6 +95,7 @@ void process_health_message(LLMessageSystem *mesgsys, void **user_data);  void process_sim_stats(LLMessageSystem *mesgsys, void **user_data);  void process_shooter_agent_hit(LLMessageSystem* msg, void** user_data);  void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data); +void process_object_animation(LLMessageSystem *mesgsys, void **user_data);  void process_avatar_appearance(LLMessageSystem *mesgsys, void **user_data);  void process_camera_constraint(LLMessageSystem *mesgsys, void **user_data);  void process_avatar_sit_response(LLMessageSystem *mesgsys, void **user_data); diff --git a/scripts/messages/message_template.msg b/scripts/messages/message_template.msg index c56eaae6fe..3185121a6e 100755 --- a/scripts/messages/message_template.msg +++ b/scripts/messages/message_template.msg @@ -8,7 +8,7 @@ version 2.0  // for each type is listed below:  // Low: 423  // Medium: 18 -// High: 29 +// High: 30  // PLEASE UPDATE THIS WHEN YOU ADD A NEW MESSAGE! @@ -3571,7 +3571,6 @@ version 2.0  	}  } -  // AvatarAppearance - Update visual params  {  	AvatarAppearance Low 158 Trusted Zerocoded @@ -7286,6 +7285,33 @@ version 2.0  // ************************************************************************* +// Object animation messages +// ************************************************************************* + +// Note this is basically identical to AvatarAnimation. +// Needs to be a different message because existing viewers +// have insufficiently smart handler functions. + +// ObjectAnimation - Update animation state +// simulator --> viewer +{ +        ObjectAnimation High 30 Trusted Unencoded +        { +                Sender                  Single +                {       ID                      LLUUID  } +        } +        { +                AnimationList Variable +                { AnimID                LLUUID } +                { AnimSequenceID S32 } +        } +        { +                AnimationSourceList Variable +                { ObjectID              LLUUID } +        } +} + +// *************************************************************************  // Asset storage messages  // ************************************************************************* diff --git a/scripts/messages/message_template.msg.sha1 b/scripts/messages/message_template.msg.sha1 index 5bc06ec042..88b84e29da 100755 --- a/scripts/messages/message_template.msg.sha1 +++ b/scripts/messages/message_template.msg.sha1 @@ -1 +1 @@ -337f351910b0c8821cb3d447bc6578516a043c80
\ No newline at end of file +428700550e70f611b632e3bb6422fe1d093a0313
\ No newline at end of file | 
