@quenty/animations 8.22.3-canary.99eacfd.0 → 8.22.4-canary.607f741.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,12 +3,20 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [8.22.3-canary.99eacfd.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/animations@8.22.2...@quenty/animations@8.22.3-canary.99eacfd.0) (2025-12-12)
6
+ ## [8.22.4-canary.607f741.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/animations@8.22.3...@quenty/animations@8.22.4-canary.607f741.0) (2025-12-28)
7
+
8
+ **Note:** Version bump only for package @quenty/animations
9
+
10
+
11
+
12
+
13
+
14
+ ## [8.22.3](https://github.com/Quenty/NevermoreEngine/compare/@quenty/animations@8.22.2...@quenty/animations@8.22.3) (2025-12-13)
7
15
 
8
16
 
9
17
  ### Bug Fixes
10
18
 
11
- * Check Looped after loaded ([99eacfd](https://github.com/Quenty/NevermoreEngine/commit/99eacfd66c3484684fb82fb4655c76afb85c5f81))
19
+ * Small patches to nevermore libraries ([#614](https://github.com/Quenty/NevermoreEngine/issues/614)) ([6eeb33b](https://github.com/Quenty/NevermoreEngine/commit/6eeb33b9d215d3d753a433e4c612f391bcc0d286))
12
20
 
13
21
 
14
22
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quenty/animations",
3
- "version": "8.22.3-canary.99eacfd.0",
3
+ "version": "8.22.4-canary.607f741.0",
4
4
  "description": "Utility methods for playing back animations on Roblox",
5
5
  "keywords": [
6
6
  "Roblox",
@@ -28,7 +28,6 @@
28
28
  "@quenty/baseobject": "10.9.0",
29
29
  "@quenty/enumutils": "3.4.2",
30
30
  "@quenty/humanoidanimatorutils": "3.2.0",
31
- "@quenty/instanceutils": "13.20.2",
32
31
  "@quenty/loader": "10.9.0",
33
32
  "@quenty/maid": "3.5.0",
34
33
  "@quenty/promise": "10.12.0",
@@ -36,10 +35,10 @@
36
35
  "@quenty/rbxasset": "5.10.0",
37
36
  "@quenty/rx": "13.20.0",
38
37
  "@quenty/signal": "7.11.1",
39
- "@quenty/valueobject": "13.21.2"
38
+ "@quenty/valueobject": "13.21.3-canary.607f741.0"
40
39
  },
41
40
  "publishConfig": {
42
41
  "access": "public"
43
42
  },
44
- "gitHead": "99eacfd66c3484684fb82fb4655c76afb85c5f81"
43
+ "gitHead": "607f7418f46b85cd5843f1c5665911eb2dd7e3fb"
45
44
  }
@@ -16,24 +16,25 @@ local Maid = require("Maid")
16
16
  local Promise = require("Promise")
17
17
  local PromiseMaidUtils = require("PromiseMaidUtils")
18
18
  local RbxAssetUtils = require("RbxAssetUtils")
19
- local RxInstanceUtils = require("RxInstanceUtils")
20
19
  local ValueObject = require("ValueObject")
21
20
 
22
21
  local AnimationSlotPlayer = setmetatable({}, BaseObject)
23
22
  AnimationSlotPlayer.ClassName = "AnimationSlotPlayer"
24
23
  AnimationSlotPlayer.__index = AnimationSlotPlayer
25
24
 
26
- export type AnimationSlotPlayer = typeof(setmetatable(
27
- {} :: {
28
- _maid: Maid.Maid,
29
- _animationTarget: ValueObject.ValueObject<Instance>,
30
- _defaultFadeTime: ValueObject.ValueObject<number>,
31
- _defaultAnimationPriority: ValueObject.ValueObject<Enum.AnimationPriority>,
32
- _currentAnimationTrackData: ValueObject.ValueObject<any>,
33
- _currentAnimationId: ValueObject.ValueObject<string>,
34
- },
35
- {} :: typeof({ __index = AnimationSlotPlayer })
36
- )) & BaseObject.BaseObject
25
+ export type AnimationSlotPlayer =
26
+ typeof(setmetatable(
27
+ {} :: {
28
+ _maid: Maid.Maid,
29
+ _animationTarget: ValueObject.ValueObject<Instance>,
30
+ _defaultFadeTime: ValueObject.ValueObject<number>,
31
+ _defaultAnimationPriority: ValueObject.ValueObject<Enum.AnimationPriority>,
32
+ _currentAnimationTrackData: ValueObject.ValueObject<any>,
33
+ _currentAnimationId: ValueObject.ValueObject<string>,
34
+ },
35
+ {} :: typeof({ __index = AnimationSlotPlayer })
36
+ ))
37
+ & BaseObject.BaseObject
37
38
 
38
39
  --[=[
39
40
  Creates a new AnimationSlotPlayer with a target to play the animation on.
@@ -255,6 +256,9 @@ function AnimationSlotPlayer.Play(
255
256
  priority = priority or self._defaultAnimationPriority.Value
256
257
  weight = weight or 1 -- We need to explicitly adjust the weight here
257
258
 
259
+ -- Make sure we stop our last animation fully
260
+ self._maid._current = nil
261
+
258
262
  local topMaid = Maid.new()
259
263
 
260
264
  local animationId = RbxAssetUtils.toRbxAssetId(id)
@@ -288,17 +292,15 @@ function AnimationSlotPlayer.Play(
288
292
  end
289
293
  end)
290
294
 
291
- -- This is a hack to ensure that animations stop at a set rate instead of roblox's weird default faded time
292
- maid:GivePromise(AnimationPromiseUtils.promiseLoaded(track)):Then(function()
293
- maid:GiveTask(RxInstanceUtils.observePropertyBrio(track, "Looped", function(looped)
294
- return not looped
295
- end):Subscribe(function()
295
+ if not track.Looped then
296
+ -- This is a hack to ensure that animations stop at a set rate instead of roblox's weird default faded time
297
+ maid:GivePromise(AnimationPromiseUtils.promiseLoaded(track)):Then(function()
296
298
  -- This is very very sad...
297
299
  maid:GiveTask(task.delay(track.Length - track.TimePosition - 2 / 60, function()
298
300
  track:Stop(fadeTime or self._defaultFadeTime.Value)
299
301
  end))
300
- end))
301
- end)
302
+ end)
303
+ end
302
304
 
303
305
  maid:GiveTask(function()
304
306
  local stopFadeTime = fadeTime or self._defaultFadeTime.Value
@@ -17,19 +17,21 @@ local AnimationTrackPlayer = setmetatable({}, BaseObject)
17
17
  AnimationTrackPlayer.ClassName = "AnimationTrackPlayer"
18
18
  AnimationTrackPlayer.__index = AnimationTrackPlayer
19
19
 
20
- export type AnimationTrackPlayer = typeof(setmetatable(
21
- {} :: {
22
- -- Public
23
- KeyframeReached: Signal.Signal<()>,
24
-
25
- -- Private
26
- _animationTarget: ValueObject.ValueObject<Instance>,
27
- _trackId: ValueObject.ValueObject<string | number>,
28
- _currentTrack: ValueObject.ValueObject<AnimationTrack?>,
29
- _animationPriority: ValueObject.ValueObject<number>,
30
- },
31
- {} :: typeof({ __index = AnimationTrackPlayer })
32
- )) & BaseObject.BaseObject
20
+ export type AnimationTrackPlayer =
21
+ typeof(setmetatable(
22
+ {} :: {
23
+ -- Public
24
+ KeyframeReached: Signal.Signal<()>,
25
+
26
+ -- Private
27
+ _animationTarget: ValueObject.ValueObject<Instance>,
28
+ _trackId: ValueObject.ValueObject<string | number>,
29
+ _currentTrack: ValueObject.ValueObject<AnimationTrack?>,
30
+ _animationPriority: ValueObject.ValueObject<number>,
31
+ },
32
+ {} :: typeof({ __index = AnimationTrackPlayer })
33
+ ))
34
+ & BaseObject.BaseObject
33
35
 
34
36
  --[=[
35
37
  Plays an animation track in the target. Async loads the track when
@@ -20,14 +20,16 @@ local StudioRigAnimator = setmetatable({}, BaseObject)
20
20
  StudioRigAnimator.ClassName = "StudioRigAnimator"
21
21
  StudioRigAnimator.__index = StudioRigAnimator
22
22
 
23
- export type StudioRigAnimator = typeof(setmetatable(
24
- {} :: {
25
- _animator: Animator?,
26
- _obj: Animator | Humanoid,
27
- _lastTime: number,
28
- },
29
- {} :: typeof({ __index = StudioRigAnimator })
30
- )) & BaseObject.BaseObject
23
+ export type StudioRigAnimator =
24
+ typeof(setmetatable(
25
+ {} :: {
26
+ _animator: Animator?,
27
+ _obj: Animator | Humanoid,
28
+ _lastTime: number,
29
+ },
30
+ {} :: typeof({ __index = StudioRigAnimator })
31
+ ))
32
+ & BaseObject.BaseObject
31
33
 
32
34
  --[=[
33
35
  Constructs a new rig animator which will play the animations for the lifetime of the