Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
abb5c3a
fix(animation): split shaderlab animation fixes
luzhuang Jun 11, 2026
aa541bd
fix(animation): restore animator state instance boundary
luzhuang Jun 15, 2026
c975875
fix(animation): stabilize animator coverage path
luzhuang Jun 15, 2026
b5fdd45
docs(animation): update animator verification note
luzhuang Jun 15, 2026
1c25d4c
fix(animation): simplify reset and cover loop events
luzhuang Jun 15, 2026
bb323ca
test: cover animator state lookup rebuild edges
luzhuang Jun 16, 2026
c5cd8cc
chore(animation): keep notes out of pr
luzhuang Jun 16, 2026
3c1d0bf
test(animation): cover active-state crossFade no-op
luzhuang Jun 16, 2026
9f603f9
chore(animation): remove redundant crossfade guards
luzhuang Jun 16, 2026
18ec4b1
test(animation): tighten animator hang smoke assertion
luzhuang Jun 16, 2026
2138aa9
test(animation): make animator state tests deterministic
luzhuang Jun 16, 2026
c37fe79
perf(animation): reduce play data getter access
luzhuang Jun 16, 2026
7d90f3c
test(animation): avoid temp layer state in current-state test
luzhuang Jun 16, 2026
9483380
perf(animation): tighten play hot paths
luzhuang Jun 16, 2026
39bf09d
perf(animation): narrow crossfade no-op guard
luzhuang Jun 16, 2026
063c352
refactor(animation): simplify animator internals
luzhuang Jun 17, 2026
ae7ae01
test(animation): cover destination crossfade no-op
luzhuang Jun 17, 2026
08ec9a1
fix(animation): invalidate cache on state removal
luzhuang Jun 17, 2026
a92f56b
fix(animation): keep event cursor synced when events are muted
luzhuang Jun 17, 2026
f2d788b
fix(animation): keep replaced state machines wired
luzhuang Jun 17, 2026
1f0e0df
refactor(animation): drop test-only playData setters
GuoLei1990 Jul 6, 2026
2484092
refactor(animation): drop single-use hot-path locals
GuoLei1990 Jul 6, 2026
a9cadf3
perf(animation): defer transition clip bounds
luzhuang Jul 6, 2026
cfed88c
refactor(animation): tidy controller internals
GuoLei1990 Jul 6, 2026
2952515
refactor(animation): use curve owner alias
luzhuang Jul 6, 2026
acf7648
refactor(animation): name state invalidation callbacks
luzhuang Jul 6, 2026
03f9f07
refactor(animation): drop redundant crossFade entry guard
GuoLei1990 Jul 6, 2026
a1eed4f
refactor(animation): drop code-restating comment
GuoLei1990 Jul 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions packages/core/src/animation/AnimationClip.ts
Original file line number Diff line number Diff line change
Expand Up @@ -205,12 +205,11 @@ export class AnimationClip extends EngineObject {
}

/**
* @internal
* Samples an animation at a given time.
* @param entity - The animated entity
* @param time - The time to sample an animation
*/
_sampleAnimation(entity: Entity, time: number): void {
sampleAnimation(entity: Entity, time: number): void {
const { _curveBindings: curveBindings } = this;
const components = AnimationCurveOwner._components;
for (let i = curveBindings.length - 1; i >= 0; i--) {
Expand Down
11 changes: 6 additions & 5 deletions packages/core/src/animation/AnimationClipCurveBinding.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ export class AnimationClipCurveBinding {
/** The animation curve. */
curve: AnimationCurve<KeyframeValueType>;

private _tempCurveOwner: Record<number, AnimationCurveOwner<KeyframeValueType>> = {};
private _tempCurveOwner = new WeakMap<Entity, AnimationCurveOwner<KeyframeValueType>>();

/**
* @internal
Expand Down Expand Up @@ -63,10 +63,11 @@ export class AnimationClipCurveBinding {
* @internal
*/
_getTempCurveOwner(entity: Entity, component: Component): AnimationCurveOwner<KeyframeValueType> {
const { instanceId } = entity;
if (!this._tempCurveOwner[instanceId]) {
this._tempCurveOwner[instanceId] = this._createCurveOwner(entity, component);
let owner = this._tempCurveOwner.get(entity);
if (!owner) {
owner = this._createCurveOwner(entity, component);
this._tempCurveOwner.set(entity, owner);
}
return this._tempCurveOwner[instanceId];
return owner;
}
}
Loading
Loading