1 Commits
Author SHA1 Message Date
西风逍遥游andCursor Agent ba9b17304e feat(animation): LitMotion-style Motion APIs (Phases 1–4) (#389)
* docs(animation): research LitMotion vs EVEngine Tween roadmap

Map Unity LitMotion's builder/bind/sequence/punch model onto the
existing animation Tween and ControlAnim stack, and outline a phased
Motion + Capability-binder plan that keeps SimulationStep and module
layering intact.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(animation): add LitMotion-style Motion builder, runtime, and sinks

Introduce typed float/Vec2/Vec3 motion storage with generation-checked
handles, fluent builders, and borrowed push sinks. Animation::advance
now pumps MotionRuntime alongside Tween. Phase 1 covers bind/run,
complete/cancel, delay/loops/yoyo, and shared ease kinds.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(animation): Phase 2 MotionSequence, ease extensions, and script bindings

Add LitMotion-style Append/Join/Insert/AppendInterval sequencing on MotionRuntime,
Back/Elastic/Bounce ease kinds, builder to()/takeDesc for unspawned scheduling,
and Squirrel newMotion/newMotionSequence wrappers with matching docs and tests.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* docs(animation): document Motion script bindings for Source quality gate

List cancelOnError, childCount, cursor, getMotionCount, and itemCount in
animation.md so check_bindings --strict no longer reports NEW gaps.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* docs(animation): add ownership/lifetime contracts on MotionRuntime resolvers

Document borrowed-pointer lifetime for resolveFloat/Vec2/Vec3 so the
architecture api-lifetime gate no longer flags them as undocumented.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(animation): Phase 3 Punch/Shake adapters and Color/Quat motions

Add LitMotion-style Punch/Shake oscillation evaluation on float/Vec2/Vec3
motions, plus Color lerp and Quat slerp pools with builders, Animation
factories, script bindings, tests, and docs.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(animation): Phase 4 motion pool ensureCapacity and free-list recycle

Pre-size float/typed motion pools with ensureCapacity, recycle completed
slots via O(1) free-lists, add FloatBufferSink for contiguous batch writes,
expose capacity queries to script, and cover with recycle/buffer/bench tests.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* ci(linux): raise Build linux debug timeout from 40m to 60m

Cold third-party + sccache misses were hitting the 40-minute step timeout
at ~94% of unit_test compile (PR #389). Job budget remains 90m.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* ci(linux): raise ASan RelWithDebInfo build timeout from 100m to 130m

Cold PR builds with sccache READ_ONLY miss hit the 100-minute step timeout
at ~94% of unit_test compile (run 34823491554). Job budget remains 270m.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* ci(macos): retry Dawn Metal configure after incomplete abseil clone

Dawn's googlesource shallow fetch can leave third_party/abseil-cpp without
CMakeLists.txt (macOS job 103997514884). Retry configure up to 3 times after
clearing the incomplete checkout; apply the same guard on the Windows Dawn
parity lane.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* ci: retrigger after transient GitHub/Vulkan download 504s

macOS passed with the Dawn abseil retry. Windows/iOS/ASan/WebGPU failed
early on versions.json / utf8proc / zstd / emdawnwebgpu HTTP 504s unrelated
to this PR; re-run permissions are unavailable so nudge CI with an empty
commit.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-09-15 00:27:46 +08:00