@quenty/numbersequenceutils 8.9.0 → 8.9.1

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,6 +3,14 @@
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.9.1](https://github.com/Quenty/NevermoreEngine/compare/@quenty/numbersequenceutils@8.9.0...@quenty/numbersequenceutils@8.9.1) (2025-03-21)
7
+
8
+ **Note:** Version bump only for package @quenty/numbersequenceutils
9
+
10
+
11
+
12
+
13
+
6
14
  # [8.9.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/numbersequenceutils@8.8.0...@quenty/numbersequenceutils@8.9.0) (2025-02-18)
7
15
 
8
16
  **Note:** Version bump only for package @quenty/numbersequenceutils
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quenty/numbersequenceutils",
3
- "version": "8.9.0",
3
+ "version": "8.9.1",
4
4
  "description": "Utility functions involving NumberSequences on Roblox",
5
5
  "keywords": [
6
6
  "Roblox",
@@ -29,7 +29,7 @@
29
29
  },
30
30
  "dependencies": {
31
31
  "@quenty/loader": "^10.8.0",
32
- "@quenty/math": "^2.7.0"
32
+ "@quenty/math": "^2.7.1"
33
33
  },
34
- "gitHead": "184a407d8d7366c39009444c3c9a7023cb176471"
34
+ "gitHead": "6b7c3e15e60cdb185986207b574e2b5591261e7a"
35
35
  }
@@ -1,3 +1,4 @@
1
+ --!strict
1
2
  --[=[
2
3
  Utility functions involving NumberSequences on Roblox
3
4
  @class NumberSequenceUtils
@@ -17,7 +18,7 @@ local EPSILON = 1e-3
17
18
  @param numberSequence NumberSequence
18
19
  @return (number) -> number
19
20
  ]=]
20
- function NumberSequenceUtils.getValueGenerator(numberSequence: NumberSequence): number
21
+ function NumberSequenceUtils.getValueGenerator(numberSequence: NumberSequence): (number) -> number
21
22
  assert(typeof(numberSequence) == "NumberSequence", "Bad numberSequence")
22
23
 
23
24
  -- TODO: Binary search
@@ -34,7 +35,7 @@ function NumberSequenceUtils.getValueGenerator(numberSequence: NumberSequence):
34
35
  return function(t)
35
36
  assert(type(t) == "number", "Bad t")
36
37
 
37
- return keypoint.Value + (math.random()-0.5)*keypoint.Envelope
38
+ return keypoint.Value + (math.random() - 0.5) * keypoint.Envelope
38
39
  end
39
40
  end
40
41
  elseif #keypoints == 2 then
@@ -48,8 +49,8 @@ function NumberSequenceUtils.getValueGenerator(numberSequence: NumberSequence):
48
49
  return first.Value
49
50
  end
50
51
  else
51
- local firstValue = first.Value + (math.random() - 0.5)*first.Envelope
52
- local secondValue = second.Value + (math.random() - 0.5)*second.Envelope
52
+ local firstValue = first.Value + (math.random() - 0.5) * first.Envelope
53
+ local secondValue = second.Value + (math.random() - 0.5) * second.Envelope
53
54
  return function(t)
54
55
  assert(type(t) == "number", "Bad t")
55
56
  local scale = math.clamp(Math.map(t, first.Time, second.Time, 0, 1), 0, 1)
@@ -59,9 +60,9 @@ function NumberSequenceUtils.getValueGenerator(numberSequence: NumberSequence):
59
60
  else
60
61
  -- pregenerate
61
62
  local values = {}
62
- for i=1, #keypoints do
63
+ for i = 1, #keypoints do
63
64
  local point = keypoints[i]
64
- values[i] = point.Value + (math.random()-0.5)*point.Envelope
65
+ values[i] = point.Value + (math.random() - 0.5) * point.Envelope
65
66
  end
66
67
 
67
68
  return function(t)
@@ -72,15 +73,15 @@ function NumberSequenceUtils.getValueGenerator(numberSequence: NumberSequence):
72
73
  end
73
74
 
74
75
  -- TODO: Binary search
75
- for i=2, #keypoints do
76
+ for i = 2, #keypoints do
76
77
  local point = keypoints[i]
77
78
  if point.Time < t then
78
79
  continue
79
80
  end
80
81
 
81
- local prevPoint = keypoints[i-1]
82
+ local prevPoint = keypoints[i - 1]
82
83
  local scale = math.clamp(Math.map(t, prevPoint.Time, point.Time, 0, 1), 0, 1)
83
- return Math.lerp(values[i-1], values[i], scale)
84
+ return Math.lerp(values[i - 1], values[i], scale)
84
85
  end
85
86
 
86
87
  return values[#keypoints]
@@ -94,7 +95,7 @@ end
94
95
  @param callback function
95
96
  @return NumberSequence
96
97
  ]=]
97
- function NumberSequenceUtils.forEachValue(sequence, callback)
98
+ function NumberSequenceUtils.forEachValue(sequence: NumberSequence, callback: (number) -> number): NumberSequence
98
99
  assert(type(callback) == "function", "Bad callback")
99
100
 
100
101
  local waypoints = {}
@@ -113,12 +114,15 @@ end
113
114
  @param scale number
114
115
  @return NumberSequence
115
116
  ]=]
116
- function NumberSequenceUtils.scale(sequence, scale)
117
+ function NumberSequenceUtils.scale(sequence: NumberSequence, scale: number): NumberSequence
117
118
  local waypoints = {}
118
119
 
119
120
  local keypoints = sequence.Keypoints
120
121
  for _, keypoint in pairs(keypoints) do
121
- table.insert(waypoints, NumberSequenceKeypoint.new(keypoint.Time, keypoint.Value*scale, keypoint.Envelope*scale))
122
+ table.insert(
123
+ waypoints,
124
+ NumberSequenceKeypoint.new(keypoint.Time, keypoint.Value * scale, keypoint.Envelope * scale)
125
+ )
122
126
  end
123
127
 
124
128
  return NumberSequence.new(waypoints)
@@ -131,15 +135,19 @@ end
131
135
  @param scale number
132
136
  @return NumberSequence
133
137
  ]=]
134
- function NumberSequenceUtils.scaleTransparency(sequence, scale)
138
+ function NumberSequenceUtils.scaleTransparency(sequence: NumberSequence, scale: number): NumberSequence
135
139
  local waypoints = {}
136
140
 
137
141
  local keypoints = sequence.Keypoints
138
142
  for _, keypoint in pairs(keypoints) do
139
- table.insert(waypoints, NumberSequenceKeypoint.new(
140
- keypoint.Time,
141
- Math.map(keypoint.Value, 0, 1, scale, 1),
142
- keypoint.Envelope*scale))
143
+ table.insert(
144
+ waypoints,
145
+ NumberSequenceKeypoint.new(
146
+ keypoint.Time,
147
+ Math.map(keypoint.Value, 0, 1, scale, 1),
148
+ keypoint.Envelope * scale
149
+ )
150
+ )
143
151
  end
144
152
 
145
153
  return NumberSequence.new(waypoints)
@@ -156,8 +164,12 @@ end
156
164
  @return NumberSequence
157
165
  ]=]
158
166
  function NumberSequenceUtils.stripe(
159
- stripes, backgroundTransparency, stripeTransparency, percentStripeThickness, percentOffset)
160
-
167
+ stripes: number,
168
+ backgroundTransparency: number,
169
+ stripeTransparency: number,
170
+ percentStripeThickness: number,
171
+ percentOffset: number
172
+ ): NumberSequence
161
173
  percentOffset = percentOffset or 0
162
174
  percentStripeThickness = math.clamp(percentStripeThickness or 0.5, 0, 1)
163
175
 
@@ -167,16 +179,16 @@ function NumberSequenceUtils.stripe(
167
179
  return NumberSequence.new(stripeTransparency)
168
180
  end
169
181
 
170
- local timeWidth = 1/stripes
171
- local timeOffset = percentOffset*timeWidth
172
- timeOffset = timeOffset + percentStripeThickness*timeWidth*0.5 -- We add thickness to center
182
+ local timeWidth = 1 / stripes
183
+ local timeOffset = percentOffset * timeWidth
184
+ timeOffset = timeOffset + percentStripeThickness * timeWidth * 0.5 -- We add thickness to center
173
185
  timeOffset = timeOffset % timeWidth
174
186
 
175
187
  -- Generate initialial points
176
188
  local waypoints = {}
177
- for i=0, stripes-1 do
178
- local timestampStart = (i/stripes + timeOffset) % 1
179
- local timeStampMiddle = (timestampStart + timeWidth*(1 - percentStripeThickness)) % 1
189
+ for i = 0, stripes - 1 do
190
+ local timestampStart = (i / stripes + timeOffset) % 1
191
+ local timeStampMiddle = (timestampStart + timeWidth * (1 - percentStripeThickness)) % 1
180
192
 
181
193
  table.insert(waypoints, NumberSequenceKeypoint.new(timestampStart, backgroundTransparency))
182
194
  table.insert(waypoints, NumberSequenceKeypoint.new(timeStampMiddle, stripeTransparency))
@@ -191,8 +203,8 @@ function NumberSequenceUtils.stripe(
191
203
  -- Handle first!
192
204
  table.insert(fullWaypoints, waypoints[1])
193
205
 
194
- for i=2, #waypoints do
195
- local previous = waypoints[i-1]
206
+ for i = 2, #waypoints do
207
+ local previous = waypoints[i - 1]
196
208
  local current = waypoints[i]
197
209
 
198
210
  if current.Time - EPSILON > previous.Time then
@@ -234,4 +246,4 @@ function NumberSequenceUtils.stripe(
234
246
  return NumberSequence.new(fullWaypoints)
235
247
  end
236
248
 
237
- return NumberSequenceUtils
249
+ return NumberSequenceUtils