-
Couldn't load subscription status.
- Fork 14
Social emotes shape: Interaction, animation and replication #5549
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: feat/social-emotes/main
Are you sure you want to change the base?
Social emotes shape: Interaction, animation and replication #5549
Conversation
…ng clients CharacterEmoteComponent, EmoteReferences, CharacterEmoteIntent, RemoteEmoteIntention... extended to transfer the new data.
…ients Implemented SocialEmoteInteractionsManager which stores the state of every interaction.
The armature of the receiver is renamed while the outcome animation is playing. Added the initiator's wallet address to the data sent through livekit. Added the SocialEmoteInteractionSystem. The receiver is teleported to the position of the initiator. The initiator plays the outcome animation when the receiver reacts to the interaction. The AvatarBase prefab now stores a reference to the Armature object. When hovering another avatar with the mouse cursor, it looks different depending on whether it has started an interaction.
It can be repeated. Start animation can be cancelled by moving or by playing another emote. Start animation can be played when playing a different emote. If start animation is played while playing outcome animation, it stops the interaction and starts again. Both avatars can walk and play emotes normally after interacting in both clients. The state of the interaction matches in both clients all the time.
+Possible fix
This reverts commit 3dfda1f.
Emote DTO layout fixed. Start audio clip is now properly stored when downloaded.
…re are scene ABs This started to happen when the Single AB solution was introduced.
|
Claude finished @QThund's task —— View job Automated Code Review AnalysisTodo List
Issues Requiring Fixes1. Singleton Anti-Pattern ViolationLocation: 2. Missing Component Mutation SafetyLocation: 3. Unsafe Component Access Without Null ChecksLocation: 4. System Constructor Visibility ViolationLocation: 5. Performance Issue: Missing World Access CachingLocation: 6. Exception Handling Missing for Async OperationsLocation: 7. Debug Logging in Production CodeLocation: Multiple files with 8. Pool Resource Leak RiskLocation: 9. Component State InconsistencyLocation: 10. Unnecessary Object Allocation in Hot PathLocation: Critical Path Forward
The most critical issues affect ECS system integrity and runtime safety. The singleton pattern particularly violates core ECS architecture principles outlined in CLAUDE.md. |
Pull Request Description
What does this PR change?
It implements the full sequence of an interaction among 2 avatars:
Created the SocialEmoteInteractionManager, where the state of all active interactions is registered.
Please ignore all the Log calls, they are necessary to keep improving the feature.
See the docs: https://www.notion.so/decentraland/Social-Emotes-22d5f41146a5809dbe8ff69a9682f353
The sequence (main path):

The sequence (all paths)

Test Instructions
2 clients are required, only one of the players have a social emote.
The social emote should have:
Client A plays the social emote
Client A cancels the start animation (by moving or triggering another emote)
Client B can hover and click on the other avatar that is playing start animation
Client B plays the outcome animation
Client A plays the outcome animation
Client B cancels the social emote while playing outcome animation (by moving or triggering another emote)
Client A cancels the social emote while playing outcome animation (by moving or triggering another emote)
Client C sees the complete sequence