@axpecter/lync 1.4.3 → 1.5.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/README.md +41 -2
- package/package.json +1 -1
- package/src/Types.luau +13 -1
- package/src/api/Group.luau +35 -28
- package/src/api/Namespace.luau +107 -89
- package/src/api/Packet.luau +69 -51
- package/src/api/Query.luau +101 -95
- package/src/api/Scope.luau +32 -18
- package/src/api/Signal.luau +78 -56
- package/src/codec/Base.luau +17 -17
- package/src/codec/composite/Array.luau +74 -74
- package/src/codec/composite/Map.luau +80 -80
- package/src/codec/composite/Optional.luau +14 -14
- package/src/codec/composite/Shared.luau +35 -35
- package/src/codec/composite/Struct.luau +108 -108
- package/src/codec/composite/Tagged.luau +71 -71
- package/src/codec/composite/Tuple.luau +35 -35
- package/src/codec/datatype/Buffer.luau +18 -18
- package/src/codec/datatype/CFrame.luau +24 -24
- package/src/codec/datatype/Color.luau +8 -12
- package/src/codec/datatype/Instance.luau +13 -13
- package/src/codec/datatype/IntVector.luau +17 -17
- package/src/codec/datatype/NumberRange.luau +7 -7
- package/src/codec/datatype/Ray.luau +16 -16
- package/src/codec/datatype/Rect.luau +13 -13
- package/src/codec/datatype/Region.luau +32 -36
- package/src/codec/datatype/Sequence.luau +41 -41
- package/src/codec/datatype/String.luau +28 -28
- package/src/codec/datatype/UDim.luau +17 -17
- package/src/codec/datatype/Vector.luau +14 -18
- package/src/codec/meta/Auto.luau +75 -73
- package/src/codec/meta/Bitfield.luau +46 -46
- package/src/codec/meta/Custom.luau +7 -7
- package/src/codec/meta/Enum.luau +25 -25
- package/src/codec/meta/Nothing.luau +3 -3
- package/src/codec/meta/Quantized.luau +63 -60
- package/src/codec/meta/Unknown.luau +11 -11
- package/src/codec/primitive/Bool.luau +12 -12
- package/src/codec/primitive/Float16.luau +28 -28
- package/src/codec/primitive/Number.luau +41 -41
- package/src/codec/primitive/Varint.luau +19 -19
- package/src/init.luau +81 -61
- package/src/internal/Baseline.luau +7 -7
- package/src/internal/Channel.luau +56 -56
- package/src/internal/Middleware.luau +29 -29
- package/src/internal/Pool.luau +15 -15
- package/src/internal/Registry.luau +19 -19
- package/src/transport/Bridge.luau +17 -17
- package/src/transport/Client.luau +46 -46
- package/src/transport/Gate.luau +56 -64
- package/src/transport/Reader.luau +34 -34
- package/src/transport/Server.luau +89 -89
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
--!strict
|
|
2
2
|
--!native
|
|
3
|
-
-- Vector2int16
|
|
3
|
+
-- Vector2int16(4B) and Vector3int16(6B) codecs.
|
|
4
4
|
|
|
5
|
-
local Base = require
|
|
5
|
+
local Base = require(script.Parent.Parent.Base)
|
|
6
6
|
|
|
7
|
-
return table.freeze
|
|
8
|
-
vec2int16 = Base.define
|
|
9
|
-
buffer.writei16
|
|
10
|
-
buffer.writei16
|
|
11
|
-
end, function
|
|
12
|
-
return Vector2int16.new
|
|
7
|
+
return table.freeze({
|
|
8
|
+
vec2int16 = Base.define(4, function(b: buffer, o: number, v: Vector2int16): ()
|
|
9
|
+
buffer.writei16(b, o, v.X)
|
|
10
|
+
buffer.writei16(b, o + 2, v.Y)
|
|
11
|
+
end, function(b: buffer, o: number): Vector2int16
|
|
12
|
+
return Vector2int16.new(buffer.readi16(b, o), buffer.readi16(b, o + 2))
|
|
13
13
|
end),
|
|
14
|
-
vec3int16 = Base.define
|
|
15
|
-
buffer.writei16
|
|
16
|
-
buffer.writei16
|
|
17
|
-
buffer.writei16
|
|
18
|
-
end, function
|
|
19
|
-
return Vector3int16.new
|
|
20
|
-
buffer.readi16
|
|
21
|
-
buffer.readi16
|
|
22
|
-
buffer.readi16
|
|
14
|
+
vec3int16 = Base.define(6, function(b: buffer, o: number, v: Vector3int16): ()
|
|
15
|
+
buffer.writei16(b, o, v.X)
|
|
16
|
+
buffer.writei16(b, o + 2, v.Y)
|
|
17
|
+
buffer.writei16(b, o + 4, v.Z)
|
|
18
|
+
end, function(b: buffer, o: number): Vector3int16
|
|
19
|
+
return Vector3int16.new(
|
|
20
|
+
buffer.readi16(b, o),
|
|
21
|
+
buffer.readi16(b, o + 2),
|
|
22
|
+
buffer.readi16(b, o + 4)
|
|
23
23
|
)
|
|
24
24
|
end),
|
|
25
25
|
})
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
--!native
|
|
3
3
|
-- NumberRange codec. 8 bytes: min f32 + max f32.
|
|
4
4
|
|
|
5
|
-
local Base = require
|
|
5
|
+
local Base = require(script.Parent.Parent.Base)
|
|
6
6
|
|
|
7
|
-
return table.freeze
|
|
8
|
-
numberRange = Base.define
|
|
9
|
-
buffer.writef32
|
|
10
|
-
buffer.writef32
|
|
11
|
-
end, function
|
|
12
|
-
return NumberRange.new
|
|
7
|
+
return table.freeze({
|
|
8
|
+
numberRange = Base.define(8, function(b: buffer, o: number, v: NumberRange): ()
|
|
9
|
+
buffer.writef32(b, o, v.Min)
|
|
10
|
+
buffer.writef32(b, o + 4, v.Max)
|
|
11
|
+
end, function(b: buffer, o: number): NumberRange
|
|
12
|
+
return NumberRange.new(buffer.readf32(b, o), buffer.readf32(b, o + 4))
|
|
13
13
|
end),
|
|
14
14
|
})
|
|
@@ -2,25 +2,25 @@
|
|
|
2
2
|
--!native
|
|
3
3
|
-- Ray codec. 24 bytes: origin vec3 + direction vec3.
|
|
4
4
|
|
|
5
|
-
local Base = require
|
|
5
|
+
local Base = require(script.Parent.Parent.Base)
|
|
6
6
|
|
|
7
|
-
return table.freeze
|
|
8
|
-
ray = Base.define
|
|
7
|
+
return table.freeze({
|
|
8
|
+
ray = Base.define(24, function(b: buffer, o: number, v: Ray): ()
|
|
9
9
|
local origin = v.Origin
|
|
10
10
|
local direction = v.Direction
|
|
11
|
-
buffer.writef32
|
|
12
|
-
buffer.writef32
|
|
13
|
-
buffer.writef32
|
|
14
|
-
buffer.writef32
|
|
15
|
-
buffer.writef32
|
|
16
|
-
buffer.writef32
|
|
17
|
-
end, function
|
|
18
|
-
return Ray.new
|
|
19
|
-
Vector3.new
|
|
20
|
-
Vector3.new
|
|
21
|
-
buffer.readf32
|
|
22
|
-
buffer.readf32
|
|
23
|
-
buffer.readf32
|
|
11
|
+
buffer.writef32(b, o, origin.X)
|
|
12
|
+
buffer.writef32(b, o + 4, origin.Y)
|
|
13
|
+
buffer.writef32(b, o + 8, origin.Z)
|
|
14
|
+
buffer.writef32(b, o + 12, direction.X)
|
|
15
|
+
buffer.writef32(b, o + 16, direction.Y)
|
|
16
|
+
buffer.writef32(b, o + 20, direction.Z)
|
|
17
|
+
end, function(b: buffer, o: number): Ray
|
|
18
|
+
return Ray.new(
|
|
19
|
+
Vector3.new(buffer.readf32(b, o), buffer.readf32(b, o + 4), buffer.readf32(b, o + 8)),
|
|
20
|
+
Vector3.new(
|
|
21
|
+
buffer.readf32(b, o + 12),
|
|
22
|
+
buffer.readf32(b, o + 16),
|
|
23
|
+
buffer.readf32(b, o + 20)
|
|
24
24
|
)
|
|
25
25
|
)
|
|
26
26
|
end),
|
|
@@ -2,20 +2,20 @@
|
|
|
2
2
|
--!native
|
|
3
3
|
-- Rect codec. 16 bytes: 4x f32.
|
|
4
4
|
|
|
5
|
-
local Base = require
|
|
5
|
+
local Base = require(script.Parent.Parent.Base)
|
|
6
6
|
|
|
7
|
-
return table.freeze
|
|
8
|
-
rect = Base.define
|
|
9
|
-
buffer.writef32
|
|
10
|
-
buffer.writef32
|
|
11
|
-
buffer.writef32
|
|
12
|
-
buffer.writef32
|
|
13
|
-
end, function
|
|
14
|
-
return Rect.new
|
|
15
|
-
buffer.readf32
|
|
16
|
-
buffer.readf32
|
|
17
|
-
buffer.readf32
|
|
18
|
-
buffer.readf32
|
|
7
|
+
return table.freeze({
|
|
8
|
+
rect = Base.define(16, function(b: buffer, o: number, v: Rect): ()
|
|
9
|
+
buffer.writef32(b, o, v.Min.X)
|
|
10
|
+
buffer.writef32(b, o + 4, v.Min.Y)
|
|
11
|
+
buffer.writef32(b, o + 8, v.Max.X)
|
|
12
|
+
buffer.writef32(b, o + 12, v.Max.Y)
|
|
13
|
+
end, function(b: buffer, o: number): Rect
|
|
14
|
+
return Rect.new(
|
|
15
|
+
buffer.readf32(b, o),
|
|
16
|
+
buffer.readf32(b, o + 4),
|
|
17
|
+
buffer.readf32(b, o + 8),
|
|
18
|
+
buffer.readf32(b, o + 12)
|
|
19
19
|
)
|
|
20
20
|
end),
|
|
21
21
|
})
|
|
@@ -1,57 +1,53 @@
|
|
|
1
1
|
--!strict
|
|
2
2
|
--!native
|
|
3
|
-
-- Region3
|
|
3
|
+
-- Region3(24B) and Region3int16(12B) codecs.
|
|
4
4
|
|
|
5
|
-
local Base = require
|
|
5
|
+
local Base = require(script.Parent.Parent.Base)
|
|
6
6
|
|
|
7
|
-
local function writeRegion3
|
|
7
|
+
local function writeRegion3(b: buffer, o: number, v: Region3): ()
|
|
8
8
|
local cf = v.CFrame
|
|
9
9
|
local size = v.Size
|
|
10
10
|
local halfSize = size * 0.5
|
|
11
11
|
local pos = cf.Position
|
|
12
12
|
local minV = pos - halfSize
|
|
13
13
|
local maxV = pos + halfSize
|
|
14
|
-
buffer.writef32
|
|
15
|
-
buffer.writef32
|
|
16
|
-
buffer.writef32
|
|
17
|
-
buffer.writef32
|
|
18
|
-
buffer.writef32
|
|
19
|
-
buffer.writef32
|
|
14
|
+
buffer.writef32(b, o, minV.X)
|
|
15
|
+
buffer.writef32(b, o + 4, minV.Y)
|
|
16
|
+
buffer.writef32(b, o + 8, minV.Z)
|
|
17
|
+
buffer.writef32(b, o + 12, maxV.X)
|
|
18
|
+
buffer.writef32(b, o + 16, maxV.Y)
|
|
19
|
+
buffer.writef32(b, o + 20, maxV.Z)
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
local function readRegion3
|
|
23
|
-
return Region3.new
|
|
24
|
-
Vector3.new
|
|
25
|
-
Vector3.new (
|
|
26
|
-
buffer.readf32 (b, o + 12),
|
|
27
|
-
buffer.readf32 (b, o + 16),
|
|
28
|
-
buffer.readf32 (b, o + 20)
|
|
29
|
-
)
|
|
22
|
+
local function readRegion3(b: buffer, o: number): Region3
|
|
23
|
+
return Region3.new(
|
|
24
|
+
Vector3.new(buffer.readf32(b, o), buffer.readf32(b, o + 4), buffer.readf32(b, o + 8)),
|
|
25
|
+
Vector3.new(buffer.readf32(b, o + 12), buffer.readf32(b, o + 16), buffer.readf32(b, o + 20))
|
|
30
26
|
)
|
|
31
27
|
end
|
|
32
28
|
|
|
33
|
-
return table.freeze
|
|
34
|
-
region3 = Base.define
|
|
35
|
-
region3int16 = Base.define
|
|
29
|
+
return table.freeze({
|
|
30
|
+
region3 = Base.define(24, writeRegion3, readRegion3),
|
|
31
|
+
region3int16 = Base.define(12, function(b: buffer, o: number, v: Region3int16): ()
|
|
36
32
|
local minV = v.Min
|
|
37
33
|
local maxV = v.Max
|
|
38
|
-
buffer.writei16
|
|
39
|
-
buffer.writei16
|
|
40
|
-
buffer.writei16
|
|
41
|
-
buffer.writei16
|
|
42
|
-
buffer.writei16
|
|
43
|
-
buffer.writei16
|
|
44
|
-
end, function
|
|
45
|
-
return Region3int16.new
|
|
46
|
-
Vector3int16.new
|
|
47
|
-
buffer.readi16
|
|
48
|
-
buffer.readi16
|
|
49
|
-
buffer.readi16
|
|
34
|
+
buffer.writei16(b, o, minV.X)
|
|
35
|
+
buffer.writei16(b, o + 2, minV.Y)
|
|
36
|
+
buffer.writei16(b, o + 4, minV.Z)
|
|
37
|
+
buffer.writei16(b, o + 6, maxV.X)
|
|
38
|
+
buffer.writei16(b, o + 8, maxV.Y)
|
|
39
|
+
buffer.writei16(b, o + 10, maxV.Z)
|
|
40
|
+
end, function(b: buffer, o: number): Region3int16
|
|
41
|
+
return Region3int16.new(
|
|
42
|
+
Vector3int16.new(
|
|
43
|
+
buffer.readi16(b, o),
|
|
44
|
+
buffer.readi16(b, o + 2),
|
|
45
|
+
buffer.readi16(b, o + 4)
|
|
50
46
|
),
|
|
51
|
-
Vector3int16.new
|
|
52
|
-
buffer.readi16
|
|
53
|
-
buffer.readi16
|
|
54
|
-
buffer.readi16
|
|
47
|
+
Vector3int16.new(
|
|
48
|
+
buffer.readi16(b, o + 6),
|
|
49
|
+
buffer.readi16(b, o + 8),
|
|
50
|
+
buffer.readi16(b, o + 10)
|
|
55
51
|
)
|
|
56
52
|
)
|
|
57
53
|
end),
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
--!native
|
|
3
3
|
-- NumberSequence and ColorSequence codecs with varint length prefix.
|
|
4
4
|
|
|
5
|
-
local Channel = require
|
|
6
|
-
local Types = require
|
|
7
|
-
local Varint = require
|
|
5
|
+
local Channel = require(script.Parent.Parent.Parent.internal.Channel)
|
|
6
|
+
local Types = require(script.Parent.Parent.Parent.Types)
|
|
7
|
+
local Varint = require(script.Parent.Parent.primitive.Varint)
|
|
8
8
|
|
|
9
9
|
type ChannelState = Types.ChannelState
|
|
10
10
|
|
|
11
11
|
local alloc = Channel.alloc
|
|
12
12
|
|
|
13
|
-
-- Constants
|
|
13
|
+
-- Constants -----------------------------------------------------------
|
|
14
14
|
|
|
15
15
|
local NS_STRIDE = 12
|
|
16
16
|
local CS_STRIDE = 7
|
|
@@ -18,15 +18,15 @@ local CS_STRIDE = 7
|
|
|
18
18
|
local round = math.round
|
|
19
19
|
local clamp = math.clamp
|
|
20
20
|
|
|
21
|
-
-- Public
|
|
21
|
+
-- Public --------------------------------------------------------------
|
|
22
22
|
|
|
23
23
|
local Sequence = {}
|
|
24
24
|
|
|
25
|
-
Sequence.numberSequence = table.freeze
|
|
26
|
-
write = function
|
|
25
|
+
Sequence.numberSequence = table.freeze({
|
|
26
|
+
write = function(ch: ChannelState, value: NumberSequence): ()
|
|
27
27
|
local keypoints = value.Keypoints
|
|
28
28
|
local count = #keypoints
|
|
29
|
-
Varint.write
|
|
29
|
+
Varint.write(ch, count)
|
|
30
30
|
|
|
31
31
|
if count == 0 then
|
|
32
32
|
return
|
|
@@ -35,47 +35,47 @@ Sequence.numberSequence = table.freeze ({
|
|
|
35
35
|
local totalBytes = count * NS_STRIDE
|
|
36
36
|
local c = ch.cursor
|
|
37
37
|
if c + totalBytes > ch.size then
|
|
38
|
-
alloc
|
|
38
|
+
alloc(ch, totalBytes)
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
local b = ch.buff
|
|
42
42
|
for i = 1, count do
|
|
43
43
|
local kp = keypoints[i]
|
|
44
|
-
buffer.writef32
|
|
45
|
-
buffer.writef32
|
|
46
|
-
buffer.writef32
|
|
44
|
+
buffer.writef32(b, c, kp.Time)
|
|
45
|
+
buffer.writef32(b, c + 4, kp.Value)
|
|
46
|
+
buffer.writef32(b, c + 8, kp.Envelope)
|
|
47
47
|
c += NS_STRIDE
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
ch.cursor = c
|
|
51
51
|
end,
|
|
52
|
-
read = function
|
|
53
|
-
local count, lenBytes = Varint.read
|
|
52
|
+
read = function(src: buffer, pos: number, _refs: { Instance }?): (NumberSequence, number)
|
|
53
|
+
local count, lenBytes = Varint.read(src, pos)
|
|
54
54
|
local absPos = pos + lenBytes
|
|
55
55
|
|
|
56
56
|
if count == 0 then
|
|
57
|
-
return NumberSequence.new
|
|
57
|
+
return NumberSequence.new(0), lenBytes
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
-
local keypoints = table.create
|
|
60
|
+
local keypoints = table.create(count)
|
|
61
61
|
for i = 1, count do
|
|
62
|
-
keypoints[i] = NumberSequenceKeypoint.new
|
|
63
|
-
buffer.readf32
|
|
64
|
-
buffer.readf32
|
|
65
|
-
buffer.readf32
|
|
62
|
+
keypoints[i] = NumberSequenceKeypoint.new(
|
|
63
|
+
buffer.readf32(src, absPos),
|
|
64
|
+
buffer.readf32(src, absPos + 4),
|
|
65
|
+
buffer.readf32(src, absPos + 8)
|
|
66
66
|
)
|
|
67
67
|
absPos += NS_STRIDE
|
|
68
68
|
end
|
|
69
69
|
|
|
70
|
-
return NumberSequence.new
|
|
70
|
+
return NumberSequence.new(keypoints), absPos - pos
|
|
71
71
|
end,
|
|
72
72
|
})
|
|
73
73
|
|
|
74
|
-
Sequence.colorSequence = table.freeze
|
|
75
|
-
write = function
|
|
74
|
+
Sequence.colorSequence = table.freeze({
|
|
75
|
+
write = function(ch: ChannelState, value: ColorSequence): ()
|
|
76
76
|
local keypoints = value.Keypoints
|
|
77
77
|
local count = #keypoints
|
|
78
|
-
Varint.write
|
|
78
|
+
Varint.write(ch, count)
|
|
79
79
|
|
|
80
80
|
if count == 0 then
|
|
81
81
|
return
|
|
@@ -84,45 +84,45 @@ Sequence.colorSequence = table.freeze ({
|
|
|
84
84
|
local totalBytes = count * CS_STRIDE
|
|
85
85
|
local c = ch.cursor
|
|
86
86
|
if c + totalBytes > ch.size then
|
|
87
|
-
alloc
|
|
87
|
+
alloc(ch, totalBytes)
|
|
88
88
|
end
|
|
89
89
|
|
|
90
90
|
local b = ch.buff
|
|
91
91
|
for i = 1, count do
|
|
92
92
|
local kp = keypoints[i]
|
|
93
93
|
local color = kp.Value
|
|
94
|
-
buffer.writef32
|
|
95
|
-
buffer.writeu8
|
|
96
|
-
buffer.writeu8
|
|
97
|
-
buffer.writeu8
|
|
94
|
+
buffer.writef32(b, c, kp.Time)
|
|
95
|
+
buffer.writeu8(b, c + 4, round(clamp(color.R, 0, 1) * 255))
|
|
96
|
+
buffer.writeu8(b, c + 5, round(clamp(color.G, 0, 1) * 255))
|
|
97
|
+
buffer.writeu8(b, c + 6, round(clamp(color.B, 0, 1) * 255))
|
|
98
98
|
c += CS_STRIDE
|
|
99
99
|
end
|
|
100
100
|
|
|
101
101
|
ch.cursor = c
|
|
102
102
|
end,
|
|
103
|
-
read = function
|
|
104
|
-
local count, lenBytes = Varint.read
|
|
103
|
+
read = function(src: buffer, pos: number, _refs: { Instance }?): (ColorSequence, number)
|
|
104
|
+
local count, lenBytes = Varint.read(src, pos)
|
|
105
105
|
local absPos = pos + lenBytes
|
|
106
106
|
|
|
107
107
|
if count == 0 then
|
|
108
|
-
return ColorSequence.new
|
|
108
|
+
return ColorSequence.new(Color3.new()), lenBytes
|
|
109
109
|
end
|
|
110
110
|
|
|
111
|
-
local keypoints = table.create
|
|
111
|
+
local keypoints = table.create(count)
|
|
112
112
|
for i = 1, count do
|
|
113
|
-
keypoints[i] = ColorSequenceKeypoint.new
|
|
114
|
-
buffer.readf32
|
|
115
|
-
Color3.fromRGB
|
|
116
|
-
buffer.readu8
|
|
117
|
-
buffer.readu8
|
|
118
|
-
buffer.readu8
|
|
113
|
+
keypoints[i] = ColorSequenceKeypoint.new(
|
|
114
|
+
buffer.readf32(src, absPos),
|
|
115
|
+
Color3.fromRGB(
|
|
116
|
+
buffer.readu8(src, absPos + 4),
|
|
117
|
+
buffer.readu8(src, absPos + 5),
|
|
118
|
+
buffer.readu8(src, absPos + 6)
|
|
119
119
|
)
|
|
120
120
|
)
|
|
121
121
|
absPos += CS_STRIDE
|
|
122
122
|
end
|
|
123
123
|
|
|
124
|
-
return ColorSequence.new
|
|
124
|
+
return ColorSequence.new(keypoints), absPos - pos
|
|
125
125
|
end,
|
|
126
126
|
})
|
|
127
127
|
|
|
128
|
-
return table.freeze
|
|
128
|
+
return table.freeze(Sequence)
|
|
@@ -2,83 +2,83 @@
|
|
|
2
2
|
--!native
|
|
3
3
|
-- Variable-length string codec with varint length prefix.
|
|
4
4
|
|
|
5
|
-
local Channel = require
|
|
6
|
-
local Types = require
|
|
7
|
-
local Varint = require
|
|
5
|
+
local Channel = require(script.Parent.Parent.Parent.internal.Channel)
|
|
6
|
+
local Types = require(script.Parent.Parent.Parent.Types)
|
|
7
|
+
local Varint = require(script.Parent.Parent.primitive.Varint)
|
|
8
8
|
|
|
9
9
|
type ChannelState = Types.ChannelState
|
|
10
10
|
|
|
11
11
|
local alloc = Channel.alloc
|
|
12
12
|
|
|
13
|
-
-- Public
|
|
13
|
+
-- Public --------------------------------------------------------------
|
|
14
14
|
|
|
15
15
|
local String = {}
|
|
16
16
|
|
|
17
|
-
String.string = table.freeze
|
|
18
|
-
write = function
|
|
17
|
+
String.string = table.freeze({
|
|
18
|
+
write = function(ch: ChannelState, value: string): ()
|
|
19
19
|
local len = #value
|
|
20
20
|
|
|
21
21
|
if len < 128 then
|
|
22
22
|
local total = 1 + len
|
|
23
23
|
local c = ch.cursor
|
|
24
24
|
if c + total > ch.size then
|
|
25
|
-
alloc
|
|
25
|
+
alloc(ch, total)
|
|
26
26
|
end
|
|
27
27
|
local b = ch.buff
|
|
28
|
-
buffer.writeu8
|
|
28
|
+
buffer.writeu8(b, c, len)
|
|
29
29
|
if len > 0 then
|
|
30
|
-
buffer.writestring
|
|
30
|
+
buffer.writestring(b, c + 1, value)
|
|
31
31
|
end
|
|
32
32
|
ch.cursor = c + total
|
|
33
33
|
else
|
|
34
|
-
Varint.write
|
|
34
|
+
Varint.write(ch, len)
|
|
35
35
|
local c = ch.cursor
|
|
36
36
|
if c + len > ch.size then
|
|
37
|
-
alloc
|
|
37
|
+
alloc(ch, len)
|
|
38
38
|
end
|
|
39
|
-
buffer.writestring
|
|
39
|
+
buffer.writestring(ch.buff, c, value)
|
|
40
40
|
ch.cursor = c + len
|
|
41
41
|
end
|
|
42
42
|
end,
|
|
43
|
-
read = function
|
|
44
|
-
local len, lenBytes = Varint.read
|
|
43
|
+
read = function(src: buffer, pos: number, _refs: { Instance }?): (string, number)
|
|
44
|
+
local len, lenBytes = Varint.read(src, pos)
|
|
45
45
|
if len == 0 then
|
|
46
46
|
return "", lenBytes
|
|
47
47
|
end
|
|
48
48
|
|
|
49
|
-
local remaining = buffer.len
|
|
49
|
+
local remaining = buffer.len(src) - pos - lenBytes
|
|
50
50
|
if len > remaining then
|
|
51
|
-
error
|
|
51
|
+
error(`[Lync] String length exceeds buffer: {len} > {remaining}`)
|
|
52
52
|
end
|
|
53
53
|
|
|
54
|
-
return buffer.readstring
|
|
54
|
+
return buffer.readstring(src, pos + lenBytes, len), lenBytes + len
|
|
55
55
|
end,
|
|
56
56
|
})
|
|
57
57
|
|
|
58
|
-
function String.bounded
|
|
59
|
-
if maxLength <= 0 or maxLength ~= math.floor
|
|
60
|
-
error
|
|
58
|
+
function String.bounded(maxLength: number): any
|
|
59
|
+
if maxLength <= 0 or maxLength ~= math.floor(maxLength) then
|
|
60
|
+
error(`[Lync] boundedString maxLength must be a positive integer, got {maxLength}`)
|
|
61
61
|
end
|
|
62
62
|
|
|
63
|
-
return table.freeze
|
|
63
|
+
return table.freeze({
|
|
64
64
|
write = String.string.write,
|
|
65
|
-
read = function
|
|
66
|
-
local len, lenBytes = Varint.read
|
|
65
|
+
read = function(src: buffer, pos: number, _refs: { Instance }?): (string, number)
|
|
66
|
+
local len, lenBytes = Varint.read(src, pos)
|
|
67
67
|
if len > maxLength then
|
|
68
|
-
error
|
|
68
|
+
error(`[Lync] String length {len} exceeds max {maxLength}`)
|
|
69
69
|
end
|
|
70
70
|
if len == 0 then
|
|
71
71
|
return "", lenBytes
|
|
72
72
|
end
|
|
73
73
|
|
|
74
|
-
local remaining = buffer.len
|
|
74
|
+
local remaining = buffer.len(src) - pos - lenBytes
|
|
75
75
|
if len > remaining then
|
|
76
|
-
error
|
|
76
|
+
error(`[Lync] String length exceeds buffer: {len} > {remaining}`)
|
|
77
77
|
end
|
|
78
78
|
|
|
79
|
-
return buffer.readstring
|
|
79
|
+
return buffer.readstring(src, pos + lenBytes, len), lenBytes + len
|
|
80
80
|
end,
|
|
81
81
|
})
|
|
82
82
|
end
|
|
83
83
|
|
|
84
|
-
return table.freeze
|
|
84
|
+
return table.freeze(String)
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
--!strict
|
|
2
2
|
--!native
|
|
3
|
-
-- UDim
|
|
3
|
+
-- UDim(8B) and UDim2(16B) codecs.
|
|
4
4
|
|
|
5
|
-
local Base = require
|
|
5
|
+
local Base = require(script.Parent.Parent.Base)
|
|
6
6
|
|
|
7
|
-
return table.freeze
|
|
8
|
-
udim = Base.define
|
|
9
|
-
buffer.writef32
|
|
10
|
-
buffer.writei32
|
|
11
|
-
end, function
|
|
12
|
-
return UDim.new
|
|
7
|
+
return table.freeze({
|
|
8
|
+
udim = Base.define(8, function(b: buffer, o: number, v: UDim): ()
|
|
9
|
+
buffer.writef32(b, o, v.Scale)
|
|
10
|
+
buffer.writei32(b, o + 4, v.Offset)
|
|
11
|
+
end, function(b: buffer, o: number): UDim
|
|
12
|
+
return UDim.new(buffer.readf32(b, o), buffer.readi32(b, o + 4))
|
|
13
13
|
end),
|
|
14
|
-
udim2 = Base.define
|
|
14
|
+
udim2 = Base.define(16, function(b: buffer, o: number, v: UDim2): ()
|
|
15
15
|
local x = v.X
|
|
16
16
|
local y = v.Y
|
|
17
|
-
buffer.writef32
|
|
18
|
-
buffer.writei32
|
|
19
|
-
buffer.writef32
|
|
20
|
-
buffer.writei32
|
|
21
|
-
end, function
|
|
22
|
-
return UDim2.new
|
|
23
|
-
UDim.new
|
|
24
|
-
UDim.new
|
|
17
|
+
buffer.writef32(b, o, x.Scale)
|
|
18
|
+
buffer.writei32(b, o + 4, x.Offset)
|
|
19
|
+
buffer.writef32(b, o + 8, y.Scale)
|
|
20
|
+
buffer.writei32(b, o + 12, y.Offset)
|
|
21
|
+
end, function(b: buffer, o: number): UDim2
|
|
22
|
+
return UDim2.new(
|
|
23
|
+
UDim.new(buffer.readf32(b, o), buffer.readi32(b, o + 4)),
|
|
24
|
+
UDim.new(buffer.readf32(b, o + 8), buffer.readi32(b, o + 12))
|
|
25
25
|
)
|
|
26
26
|
end),
|
|
27
27
|
})
|
|
@@ -1,25 +1,21 @@
|
|
|
1
1
|
--!strict
|
|
2
2
|
--!native
|
|
3
|
-
-- Vector2
|
|
3
|
+
-- Vector2(8B) and Vector3(12B) codecs.
|
|
4
4
|
|
|
5
|
-
local Base = require
|
|
5
|
+
local Base = require(script.Parent.Parent.Base)
|
|
6
6
|
|
|
7
|
-
return table.freeze
|
|
8
|
-
vec2 = Base.define
|
|
9
|
-
buffer.writef32
|
|
10
|
-
buffer.writef32
|
|
11
|
-
end, function
|
|
12
|
-
return Vector2.new
|
|
7
|
+
return table.freeze({
|
|
8
|
+
vec2 = Base.define(8, function(b: buffer, o: number, v: Vector2): ()
|
|
9
|
+
buffer.writef32(b, o, v.X)
|
|
10
|
+
buffer.writef32(b, o + 4, v.Y)
|
|
11
|
+
end, function(b: buffer, o: number): Vector2
|
|
12
|
+
return Vector2.new(buffer.readf32(b, o), buffer.readf32(b, o + 4))
|
|
13
13
|
end),
|
|
14
|
-
vec3 = Base.define
|
|
15
|
-
buffer.writef32
|
|
16
|
-
buffer.writef32
|
|
17
|
-
buffer.writef32
|
|
18
|
-
end, function
|
|
19
|
-
return Vector3.new (
|
|
20
|
-
buffer.readf32 (b, o),
|
|
21
|
-
buffer.readf32 (b, o + 4),
|
|
22
|
-
buffer.readf32 (b, o + 8)
|
|
23
|
-
)
|
|
14
|
+
vec3 = Base.define(12, function(b: buffer, o: number, v: Vector3): ()
|
|
15
|
+
buffer.writef32(b, o, v.X)
|
|
16
|
+
buffer.writef32(b, o + 4, v.Y)
|
|
17
|
+
buffer.writef32(b, o + 8, v.Z)
|
|
18
|
+
end, function(b: buffer, o: number): Vector3
|
|
19
|
+
return Vector3.new(buffer.readf32(b, o), buffer.readf32(b, o + 4), buffer.readf32(b, o + 8))
|
|
24
20
|
end),
|
|
25
21
|
})
|