Skip to content

Conversation

@Ataman
Copy link

@Ataman Ataman commented Dec 11, 2025

This PR contains a proposal for solving the lack of a generalized system for running animations on entities (mostly those using SpriteComponent) without having to implement another component/system pair every single time. I'm submitting this as a draft since I'm uncertain how much it should go into the details and was hoping for feedback. This is of course also a chance for everybody to ask questions and add any wishes, requirements or other ideas I might have missed.

Google Doc with further details (Contains details and changes that haven't made it into the proposal yet).

Hopping mice example code: https://github.com/Ataman/space-station-14/blob/asm/Content.Client/Animations/StateMachine/AnimationStateMachineActions/Animations/HoppingAnimationStateMachineAnimationAction.cs

@Ataman
Copy link
Author

Ataman commented Dec 27, 2025

After testing and playing around on my fork for two weeks; I feel confident enough about this proposal. Removing draft status now.

Also, I'm aware that the name (AnimationStateMachine) sounds atrocious. I welcome any suggestions.

@Ataman Ataman marked this pull request as ready for review December 27, 2025 20:27
@Princess-Cheeseballs
Copy link
Member

While we do need an Animation manager, much of the headache from animations is at an engine level. Multiple animations modifying the same component data don't play nice with eachother.

Would this be coupled with an engine PR?

@Ataman
Copy link
Author

Ataman commented Dec 27, 2025

Given permission, I could implement this as a System/Component pair inside RobustToolbox itself.

I believe this system could also alleviate some of the headaches about animations by adding some validation code inside the ASM-System itself. (For example: Validating that separate state machines aren't trying to animate the same component simultaneously).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants