SettleAnim and FoundationFlourish both write Transform.scale on king card — undefined visual result #28

Closed
opened 2026-05-19 18:44:35 +00:00 by funman300 · 0 comments
Owner

File

solitaire_engine/src/feedback_anim_plugin.rs lines 344–365 (tick_settle_anim), 557–587 (tick_foundation_flourish)

Description

When a King card completes the foundation pile, start_settle_anim inserts SettleAnim and start_foundation_flourish inserts FoundationFlourish on the same entity. Both tick_settle_anim and tick_foundation_flourish write to transform.scale every frame with no ordering constraint. Whichever system runs last wins each frame, producing visually undefined scale behavior during the 0.15-second settle window. tick_settle_anim writes only transform.scale.y; tick_foundation_flourish writes the full Vec3 — the partial write from tick_settle_anim is silently discarded.

Fix

Add .before() / .after() ordering so tick_settle_anim always runs after tick_foundation_flourish, or guard start_settle_anim from inserting SettleAnim when FoundationFlourish is already present.

## File `solitaire_engine/src/feedback_anim_plugin.rs` lines 344–365 (`tick_settle_anim`), 557–587 (`tick_foundation_flourish`) ## Description When a King card completes the foundation pile, `start_settle_anim` inserts `SettleAnim` and `start_foundation_flourish` inserts `FoundationFlourish` on the same entity. Both `tick_settle_anim` and `tick_foundation_flourish` write to `transform.scale` every frame with no ordering constraint. Whichever system runs last wins each frame, producing visually undefined scale behavior during the 0.15-second settle window. `tick_settle_anim` writes only `transform.scale.y`; `tick_foundation_flourish` writes the full `Vec3` — the partial write from `tick_settle_anim` is silently discarded. ## Fix Add `.before()` / `.after()` ordering so `tick_settle_anim` always runs after `tick_foundation_flourish`, or guard `start_settle_anim` from inserting `SettleAnim` when `FoundationFlourish` is already present.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: funman300/Ferrous-Solitaire#28