@quenty/transitionmodel 2.0.0-canary.367.e9fdcbc.0 → 2.0.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 +103 -1
- package/package.json +13 -12
- package/src/Shared/SpringTransitionModel.lua +13 -0
- package/src/Shared/Timed/TimedTransitionModel.lua +180 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,7 +3,109 @@
|
|
|
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
|
-
# [2.0.0
|
|
6
|
+
# [2.0.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.20.0...@quenty/transitionmodel@2.0.0) (2023-10-11)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @quenty/transitionmodel
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# [1.20.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.19.0...@quenty/transitionmodel@1.20.0) (2023-09-21)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @quenty/transitionmodel
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# [1.19.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.18.0...@quenty/transitionmodel@1.19.0) (2023-09-04)
|
|
23
|
+
|
|
24
|
+
**Note:** Version bump only for package @quenty/transitionmodel
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
# [1.18.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.17.0...@quenty/transitionmodel@1.18.0) (2023-08-23)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Features
|
|
34
|
+
|
|
35
|
+
* Add TimedTransitionModel.new() ([4d582f0](https://github.com/Quenty/NevermoreEngine/commit/4d582f0b290fca4cf3ef9b65ca4d526f0d8061ab))
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
# [1.17.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.16.0...@quenty/transitionmodel@1.17.0) (2023-08-01)
|
|
42
|
+
|
|
43
|
+
**Note:** Version bump only for package @quenty/transitionmodel
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
# [1.16.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.15.0...@quenty/transitionmodel@1.16.0) (2023-07-28)
|
|
50
|
+
|
|
51
|
+
**Note:** Version bump only for package @quenty/transitionmodel
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
# [1.15.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.14.0...@quenty/transitionmodel@1.15.0) (2023-07-25)
|
|
58
|
+
|
|
59
|
+
**Note:** Version bump only for package @quenty/transitionmodel
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
# [1.14.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.13.0...@quenty/transitionmodel@1.14.0) (2023-07-23)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
### Features
|
|
69
|
+
|
|
70
|
+
* Add :Observe() to SpringTransitionModel so it can be passed directly into Blend ([2d9fb45](https://github.com/Quenty/NevermoreEngine/commit/2d9fb45af5f9dfdfeb2b4a2933e553d9efb63a8a))
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
# [1.13.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.12.1...@quenty/transitionmodel@1.13.0) (2023-07-15)
|
|
77
|
+
|
|
78
|
+
**Note:** Version bump only for package @quenty/transitionmodel
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
## [1.12.1](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.12.0...@quenty/transitionmodel@1.12.1) (2023-07-11)
|
|
85
|
+
|
|
86
|
+
**Note:** Version bump only for package @quenty/transitionmodel
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
# [1.12.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.11.0...@quenty/transitionmodel@1.12.0) (2023-07-10)
|
|
93
|
+
|
|
94
|
+
**Note:** Version bump only for package @quenty/transitionmodel
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
# [1.11.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.10.0...@quenty/transitionmodel@1.11.0) (2023-06-17)
|
|
101
|
+
|
|
102
|
+
**Note:** Version bump only for package @quenty/transitionmodel
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
# [1.10.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.9.0...@quenty/transitionmodel@1.10.0) (2023-06-05)
|
|
7
109
|
|
|
8
110
|
**Note:** Version bump only for package @quenty/transitionmodel
|
|
9
111
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quenty/transitionmodel",
|
|
3
|
-
"version": "2.0.0
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Helps with Gui visiblity showing and hiding",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Roblox",
|
|
@@ -25,19 +25,20 @@
|
|
|
25
25
|
"Quenty"
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@quenty/baseobject": "
|
|
29
|
-
"@quenty/basicpane": "
|
|
30
|
-
"@quenty/blend": "7.0.0
|
|
31
|
-
"@quenty/instanceutils": "
|
|
32
|
-
"@quenty/loader": "
|
|
33
|
-
"@quenty/maid": "2.
|
|
34
|
-
"@quenty/promise": "
|
|
35
|
-
"@quenty/rx": "
|
|
36
|
-
"@quenty/signal": "
|
|
37
|
-
"@quenty/
|
|
28
|
+
"@quenty/baseobject": "^7.0.0",
|
|
29
|
+
"@quenty/basicpane": "^8.0.0",
|
|
30
|
+
"@quenty/blend": "^7.0.0",
|
|
31
|
+
"@quenty/instanceutils": "^8.0.0",
|
|
32
|
+
"@quenty/loader": "^7.0.0",
|
|
33
|
+
"@quenty/maid": "^2.6.0",
|
|
34
|
+
"@quenty/promise": "^7.0.0",
|
|
35
|
+
"@quenty/rx": "^8.0.0",
|
|
36
|
+
"@quenty/signal": "^3.0.0",
|
|
37
|
+
"@quenty/timedtween": "^2.0.0",
|
|
38
|
+
"@quenty/valueobject": "^8.0.0"
|
|
38
39
|
},
|
|
39
40
|
"publishConfig": {
|
|
40
41
|
"access": "public"
|
|
41
42
|
},
|
|
42
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "fdeae46099587019ec5fc15317dc673aed379400"
|
|
43
44
|
}
|
|
@@ -103,6 +103,10 @@ function SpringTransitionModel:BindToPaneVisbility(pane)
|
|
|
103
103
|
self._maid._visibleBinding = maid
|
|
104
104
|
|
|
105
105
|
return function()
|
|
106
|
+
if not self.Destroy then
|
|
107
|
+
return
|
|
108
|
+
end
|
|
109
|
+
|
|
106
110
|
if self._maid._visibleBinding == maid then
|
|
107
111
|
self._maid._visibleBinding = nil
|
|
108
112
|
end
|
|
@@ -160,6 +164,15 @@ function SpringTransitionModel:ObserveRenderStepped()
|
|
|
160
164
|
return self._springObject:ObserveRenderStepped()
|
|
161
165
|
end
|
|
162
166
|
|
|
167
|
+
--[=[
|
|
168
|
+
Alias to spring transition model observation!
|
|
169
|
+
|
|
170
|
+
@return Observable<T>
|
|
171
|
+
]=]
|
|
172
|
+
function SpringTransitionModel:Observe()
|
|
173
|
+
return self._springObject:Observe()
|
|
174
|
+
end
|
|
175
|
+
|
|
163
176
|
--[=[
|
|
164
177
|
Shows the model and promises when the showing is complete.
|
|
165
178
|
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
--[=[
|
|
2
|
+
@class TimedTransitionModel
|
|
3
|
+
]=]
|
|
4
|
+
|
|
5
|
+
local require = require(script.Parent.loader).load(script)
|
|
6
|
+
|
|
7
|
+
local BasicPane = require("BasicPane")
|
|
8
|
+
local TransitionModel = require("TransitionModel")
|
|
9
|
+
local TimedTween = require("TimedTween")
|
|
10
|
+
local Promise = require("Promise")
|
|
11
|
+
local Maid = require("Maid")
|
|
12
|
+
|
|
13
|
+
local TimedTransitionModel = setmetatable({}, BasicPane)
|
|
14
|
+
TimedTransitionModel.ClassName = "TimedTransitionModel"
|
|
15
|
+
TimedTransitionModel.__index = TimedTransitionModel
|
|
16
|
+
|
|
17
|
+
--[=[
|
|
18
|
+
A transition model that has a spring underlying it. Very useful
|
|
19
|
+
for animations on tracks that need to be on a spring.
|
|
20
|
+
|
|
21
|
+
@return TimedTransitionModel<T>
|
|
22
|
+
]=]
|
|
23
|
+
function TimedTransitionModel.new()
|
|
24
|
+
local self = setmetatable(BasicPane.new(), TimedTransitionModel)
|
|
25
|
+
|
|
26
|
+
self._transitionModel = TransitionModel.new()
|
|
27
|
+
self._transitionModel:BindToPaneVisbility(self)
|
|
28
|
+
self._maid:GiveTask(self._transitionModel)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
self._timedTween = TimedTween.new(0.15)
|
|
32
|
+
self._maid:GiveTask(self._timedTween)
|
|
33
|
+
|
|
34
|
+
-- State
|
|
35
|
+
self._transitionModel:SetPromiseShow(function(maid, doNotAnimate)
|
|
36
|
+
return self:_promiseShow(maid, doNotAnimate)
|
|
37
|
+
end)
|
|
38
|
+
self._transitionModel:SetPromiseHide(function(maid, doNotAnimate)
|
|
39
|
+
return self:_promiseHide(maid, doNotAnimate)
|
|
40
|
+
end)
|
|
41
|
+
|
|
42
|
+
return self
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
function TimedTransitionModel:SetTransitionTime(transitionTime)
|
|
46
|
+
self._timedTween:SetTransitionTime(transitionTime)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
--[=[
|
|
50
|
+
Returns true if showing is complete
|
|
51
|
+
@return boolean
|
|
52
|
+
]=]
|
|
53
|
+
function TimedTransitionModel:IsShowingComplete()
|
|
54
|
+
return self._transitionModel:IsShowingComplete()
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
--[=[
|
|
58
|
+
Returns true if hiding is complete
|
|
59
|
+
@return boolean
|
|
60
|
+
]=]
|
|
61
|
+
function TimedTransitionModel:IsHidingComplete()
|
|
62
|
+
return self._transitionModel:IsHidingComplete()
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
--[=[
|
|
66
|
+
Observe is showing is complete
|
|
67
|
+
@return Observable<boolean>
|
|
68
|
+
]=]
|
|
69
|
+
function TimedTransitionModel:ObserveIsShowingComplete()
|
|
70
|
+
return self._transitionModel:ObserveIsShowingComplete()
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
--[=[
|
|
74
|
+
Observe is hiding is complete
|
|
75
|
+
@return Observable<boolean>
|
|
76
|
+
]=]
|
|
77
|
+
function TimedTransitionModel:ObserveIsHidingComplete()
|
|
78
|
+
return self._transitionModel:ObserveIsHidingComplete()
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
--[=[
|
|
82
|
+
Binds the transition model to the actual visiblity of the pane
|
|
83
|
+
|
|
84
|
+
@param pane BasicPane
|
|
85
|
+
@return function -- Cleanup function
|
|
86
|
+
]=]
|
|
87
|
+
function TimedTransitionModel:BindToPaneVisbility(pane)
|
|
88
|
+
local maid = Maid.new()
|
|
89
|
+
|
|
90
|
+
maid:GiveTask(pane.VisibleChanged:Connect(function(isVisible, doNotAnimate)
|
|
91
|
+
self:SetVisible(isVisible, doNotAnimate)
|
|
92
|
+
end))
|
|
93
|
+
maid:GiveTask(self.VisibleChanged:Connect(function(isVisible, doNotAnimate)
|
|
94
|
+
pane:SetVisible(isVisible, doNotAnimate)
|
|
95
|
+
end))
|
|
96
|
+
|
|
97
|
+
self:SetVisible(pane:IsVisible())
|
|
98
|
+
|
|
99
|
+
self._maid._visibleBinding = maid
|
|
100
|
+
|
|
101
|
+
return function()
|
|
102
|
+
if not self.Destroy then
|
|
103
|
+
return
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
if self._maid._visibleBinding == maid then
|
|
107
|
+
self._maid._visibleBinding = nil
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
--[=[
|
|
113
|
+
Observes the spring animating
|
|
114
|
+
@return Observable<T>
|
|
115
|
+
]=]
|
|
116
|
+
function TimedTransitionModel:ObserveRenderStepped()
|
|
117
|
+
return self._timedTween:ObserveRenderStepped()
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
--[=[
|
|
121
|
+
Alias to spring transition model observation!
|
|
122
|
+
|
|
123
|
+
@return Observable<T>
|
|
124
|
+
]=]
|
|
125
|
+
function TimedTransitionModel:Observe()
|
|
126
|
+
return self._timedTween:Observe()
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
--[=[
|
|
130
|
+
Shows the model and promises when the showing is complete.
|
|
131
|
+
|
|
132
|
+
@param doNotAnimate boolean
|
|
133
|
+
@return Promise
|
|
134
|
+
]=]
|
|
135
|
+
function TimedTransitionModel:PromiseShow(doNotAnimate)
|
|
136
|
+
return self._transitionModel:PromiseShow(doNotAnimate)
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
--[=[
|
|
140
|
+
Hides the model and promises when the showing is complete.
|
|
141
|
+
|
|
142
|
+
@param doNotAnimate boolean
|
|
143
|
+
@return Promise
|
|
144
|
+
]=]
|
|
145
|
+
function TimedTransitionModel:PromiseHide(doNotAnimate)
|
|
146
|
+
return self._transitionModel:PromiseHide(doNotAnimate)
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
--[=[
|
|
150
|
+
Toggles the model and promises when the transition is complete.
|
|
151
|
+
|
|
152
|
+
@param doNotAnimate boolean
|
|
153
|
+
@return Promise
|
|
154
|
+
]=]
|
|
155
|
+
function TimedTransitionModel:PromiseToggle(doNotAnimate)
|
|
156
|
+
return self._transitionModel:PromiseToggle(doNotAnimate)
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
function TimedTransitionModel:_promiseShow(maid, doNotAnimate)
|
|
160
|
+
self._timedTween:Show(doNotAnimate)
|
|
161
|
+
|
|
162
|
+
if doNotAnimate then
|
|
163
|
+
return Promise.resolved()
|
|
164
|
+
else
|
|
165
|
+
return maid:GivePromise(self._timedTween:PromiseFinished())
|
|
166
|
+
end
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
function TimedTransitionModel:_promiseHide(maid, doNotAnimate)
|
|
170
|
+
self._timedTween:Hide(doNotAnimate)
|
|
171
|
+
|
|
172
|
+
if doNotAnimate then
|
|
173
|
+
return Promise.resolved()
|
|
174
|
+
else
|
|
175
|
+
return maid:GivePromise(self._timedTween:PromiseFinished())
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
return TimedTransitionModel
|