Emotes are a new dimension of interaction, and based on the definition of input components detailed in https://github.com/decentraland/sdk/issues/352, a list of AvatarAnimation commands will be serialized in the AvatarAnimationComponent.
The scene and the renderer should be able to add commands to this list of AvatarAnimations, and the renderer should react to those commands by executing the actual animation. Once the animation stops, the Renderer should also add a Stop command to the the list to signal the scene that the animation has stopped to chain different actions.
message AvatarAnimationComponent {
repeated AvatarAnimationCommand commands = 1; // list of last N commands
enum AnimationState {
AnimationState_STOPPED = 0;
AnimationState_PLAYING = 1;
AnimationState_LOOPING = 2;
}
message AvatarAnimationCommand {
string animation = 1; // urn, emote, or custom animation identifier
int32 timestamp = 2; // lamport timestamp
AnimationState state = 3;
}
}
Emotes are a new dimension of interaction, and based on the definition of input components detailed in https://github.com/decentraland/sdk/issues/352, a list of
AvatarAnimation
commands will be serialized in theAvatarAnimationComponent
.The scene and the renderer should be able to add commands to this list of AvatarAnimations, and the renderer should react to those commands by executing the actual animation. Once the animation stops, the Renderer should also add a Stop command to the the list to signal the scene that the animation has stopped to chain different actions.