You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(combobulate): make SetExternalRotation idempotent + diagnostic API
Root cause: every slider tick re-installed the composition expression
animation chain on _root.TransformMatrix and on the property-set buffer.
That re-install costs one composition tick before _root.TransformMatrix
shows the new value, but the auto-refresh sampler reads the property set
immediately and runs cull/sort with the new rotation. The result is a
one-frame transform-vs-cull desync. Tiny slider steps mask it; large
jumps make the prior-frame matrix grossly visible.
Fix: SetExternalRotation now no-ops when the same ExpressionAnimation
instance is reinstalled (in both Combobulate and CombobulateSceneVisual).
The property set is the only thing that needs updating per tick; the
expression already references it.
Also adds diagnostic API for future investigation: InvalidateRenderCaches,
GetRenderCacheSnapshot, GetActualChildrenOrder, GetLiveSpriteVisibility,
plus GetState/ForceRebuild/SetToggles rover actions and a per-rotation log.
Version 1.0.14.0 of sample MSIX.
description:"Returns the current viewer state (rotation X/Y/Z degrees, zoom, external-rotation toggle, auto-refresh toggle, current Source) PLUS a snapshot of the sprite renderer's per-frame cull/order caches (visible[], order[]), the live _root.Children stack, and the live SpriteVisual.IsVisible flags. Returned via the ActionResult.Consequences string list as 'key=value' lines so a caller can correlate a screenshot with the exact internal state that produced it.",
description:"Diagnostic: invalidates the sprite renderer's per-frame cull/order skip caches (_lastVisible, _lastOrder) and triggers a full rebuild against the current rotation. Use this when the view looks broken: if it heals after this call, the bug is in the skip caches; if not, the bug is elsewhere (rotation matrix, expression animation, painter algorithm).",
description:"Sets the ExternalRotation and AutoRefresh toggle switches. Either or both may be omitted to keep current. Use this to script the exact mode used to reproduce a rotation-update bug.",
55
+
parameterSchema:@"{
56
+
""type"": ""object"",
57
+
""properties"": {
58
+
""externalRotation"": { ""type"": ""boolean"" },
59
+
""autoRefresh"": { ""type"": ""boolean"" }
60
+
}
61
+
}"),
44
62
newActionDescriptor(
45
63
name:"ResetCube",
46
64
description:"Reloads the built-in cube model.",
@@ -79,6 +97,14 @@ public Task<ActionResult> DispatchAsync(string actionName, string parametersJson
0 commit comments