cluaupp 0.1.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 +20 -0
- package/LICENSE +21 -0
- package/README.md +119 -0
- package/bin/cluau.js +4 -0
- package/bin/cluaupp.js +4 -0
- package/docs/README.md +20 -0
- package/docs/architecture.md +110 -0
- package/docs/cli.md +69 -0
- package/docs/comparison.md +37 -0
- package/docs/config.md +31 -0
- package/docs/cpp-advanced.md +71 -0
- package/docs/cpp-const.md +52 -0
- package/docs/cpp-organization.md +61 -0
- package/docs/cpp-safety.md +58 -0
- package/docs/cpp-types.md +66 -0
- package/docs/getting-started.md +169 -0
- package/docs/intro.md +37 -0
- package/docs/libraries.md +77 -0
- package/docs/roblox-api.md +81 -0
- package/docs/syntax.md +131 -0
- package/include/cluaupp/datatypes.hpp +581 -0
- package/include/cluaupp/generated/enums.hpp +4920 -0
- package/include/cluaupp/generated/instances.hpp +12489 -0
- package/include/cluaupp/libs/chrono.hpp +26 -0
- package/include/cluaupp/libs/cmdr.hpp +16 -0
- package/include/cluaupp/libs/dataservice.hpp +141 -0
- package/include/cluaupp/libs/display.hpp +13 -0
- package/include/cluaupp/libs/ezvisual.hpp +18 -0
- package/include/cluaupp/libs/formatnumber.hpp +15 -0
- package/include/cluaupp/libs/fusion.hpp +41 -0
- package/include/cluaupp/libs/iris.hpp +40 -0
- package/include/cluaupp/libs/janitor.hpp +35 -0
- package/include/cluaupp/libs/math.hpp +14 -0
- package/include/cluaupp/libs/module3d.hpp +25 -0
- package/include/cluaupp/libs/net.hpp +42 -0
- package/include/cluaupp/libs/promise.hpp +30 -0
- package/include/cluaupp/libs/spring.hpp +18 -0
- package/include/cluaupp/libs/statemachine.hpp +19 -0
- package/include/cluaupp/libs/stickybillboard.hpp +14 -0
- package/include/cluaupp/libs/topbarplus.hpp +29 -0
- package/include/cluaupp/libs/twinkle.hpp +15 -0
- package/include/cluaupp/libs/vfx.hpp +13 -0
- package/include/cluaupp/libs.hpp +25 -0
- package/include/cluaupp/roblox.hpp +28 -0
- package/package.json +65 -0
- package/runtime/ArrayIndexer/init.luau +144 -0
- package/runtime/Chrono/Client/ClientClock.luau +202 -0
- package/runtime/Chrono/Client/InterpolationBuffer.luau +74 -0
- package/runtime/Chrono/Client/ModelResolver.luau +53 -0
- package/runtime/Chrono/Client/Player.luau +113 -0
- package/runtime/Chrono/Client/Receiver.luau +395 -0
- package/runtime/Chrono/Client/Replicate.luau +333 -0
- package/runtime/Chrono/Client/Sender.luau +205 -0
- package/runtime/Chrono/LICENSE +21 -0
- package/runtime/Chrono/Server/EntityGrid.luau +299 -0
- package/runtime/Chrono/Server/Player.luau +141 -0
- package/runtime/Chrono/Server/Receiver.luau +287 -0
- package/runtime/Chrono/Server/Replicate.luau +415 -0
- package/runtime/Chrono/Server/Sender.luau +306 -0
- package/runtime/Chrono/Server/ServerClock.luau +50 -0
- package/runtime/Chrono/Shared/ApplyMounts.luau +137 -0
- package/runtime/Chrono/Shared/Bin.luau +31 -0
- package/runtime/Chrono/Shared/ClockUnwrap.luau +70 -0
- package/runtime/Chrono/Shared/Config.luau +264 -0
- package/runtime/Chrono/Shared/Entity.luau +1016 -0
- package/runtime/Chrono/Shared/Events.luau +39 -0
- package/runtime/Chrono/Shared/Holder.luau +210 -0
- package/runtime/Chrono/Shared/InterpolationMath.luau +51 -0
- package/runtime/Chrono/Shared/ModelHelper.luau +122 -0
- package/runtime/Chrono/Shared/Remotes/ClientClockRelay.model.json +3 -0
- package/runtime/Chrono/Shared/Remotes/ClientHeartbeat.model.json +3 -0
- package/runtime/Chrono/Shared/Remotes/ClientLoaded.model.json +3 -0
- package/runtime/Chrono/Shared/Remotes/Death.model.json +3 -0
- package/runtime/Chrono/Shared/Remotes/Heartbeat.model.json +3 -0
- package/runtime/Chrono/Shared/Remotes/Replicate.model.json +3 -0
- package/runtime/Chrono/Shared/Remotes/ReplicateFull.model.json +3 -0
- package/runtime/Chrono/Shared/Remotes/SafeReplicate.model.json +3 -0
- package/runtime/Chrono/Shared/ReplicationRules.luau +122 -0
- package/runtime/Chrono/Shared/Signal.luau +219 -0
- package/runtime/Chrono/Shared/Snapshots.luau +218 -0
- package/runtime/Chrono/Shared/Stats.luau +204 -0
- package/runtime/Chrono/Shared/Ticker.luau +112 -0
- package/runtime/Chrono/Shared/Types.luau +247 -0
- package/runtime/Chrono/Shared/Warn.luau +33 -0
- package/runtime/Chrono/Shared/_CUSTOM_MODEL_REP/init.model.json +3 -0
- package/runtime/Chrono/_impl/Client/ClientClock.luau +202 -0
- package/runtime/Chrono/_impl/Client/InterpolationBuffer.luau +74 -0
- package/runtime/Chrono/_impl/Client/ModelResolver.luau +53 -0
- package/runtime/Chrono/_impl/Client/Player.luau +113 -0
- package/runtime/Chrono/_impl/Client/Receiver.luau +395 -0
- package/runtime/Chrono/_impl/Client/Replicate.luau +333 -0
- package/runtime/Chrono/_impl/Client/Sender.luau +205 -0
- package/runtime/Chrono/_impl/LICENSE +21 -0
- package/runtime/Chrono/_impl/Server/EntityGrid.luau +299 -0
- package/runtime/Chrono/_impl/Server/Player.luau +141 -0
- package/runtime/Chrono/_impl/Server/Receiver.luau +287 -0
- package/runtime/Chrono/_impl/Server/Replicate.luau +415 -0
- package/runtime/Chrono/_impl/Server/Sender.luau +306 -0
- package/runtime/Chrono/_impl/Server/ServerClock.luau +50 -0
- package/runtime/Chrono/_impl/Shared/ApplyMounts.luau +137 -0
- package/runtime/Chrono/_impl/Shared/Bin.luau +31 -0
- package/runtime/Chrono/_impl/Shared/ClockUnwrap.luau +70 -0
- package/runtime/Chrono/_impl/Shared/Config.luau +264 -0
- package/runtime/Chrono/_impl/Shared/Entity.luau +1016 -0
- package/runtime/Chrono/_impl/Shared/Events.luau +39 -0
- package/runtime/Chrono/_impl/Shared/Holder.luau +210 -0
- package/runtime/Chrono/_impl/Shared/InterpolationMath.luau +51 -0
- package/runtime/Chrono/_impl/Shared/ModelHelper.luau +122 -0
- package/runtime/Chrono/_impl/Shared/Remotes/ClientClockRelay.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/Remotes/ClientHeartbeat.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/Remotes/ClientLoaded.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/Remotes/Death.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/Remotes/Heartbeat.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/Remotes/Replicate.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/Remotes/ReplicateFull.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/Remotes/SafeReplicate.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/ReplicationRules.luau +122 -0
- package/runtime/Chrono/_impl/Shared/Signal.luau +219 -0
- package/runtime/Chrono/_impl/Shared/Snapshots.luau +218 -0
- package/runtime/Chrono/_impl/Shared/Stats.luau +204 -0
- package/runtime/Chrono/_impl/Shared/Ticker.luau +112 -0
- package/runtime/Chrono/_impl/Shared/Types.luau +247 -0
- package/runtime/Chrono/_impl/Shared/Warn.luau +33 -0
- package/runtime/Chrono/_impl/Shared/_CUSTOM_MODEL_REP/init.model.json +3 -0
- package/runtime/Chrono/_impl/init.luau +96 -0
- package/runtime/Chrono/init.luau +14 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/announce.luau +21 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/announceServer.luau +17 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/ban.luau +59 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/banServer.luau +30 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/gotoPlace.luau +35 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/gotoPlaceServer.luau +17 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/kick.luau +19 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/kickServer.luau +27 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/kill.luau +13 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/killServer.luau +13 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/respawn.luau +15 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/respawnServer.luau +7 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/teleport.luau +30 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/teleportServer.luau +26 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/unban.luau +26 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/unbanServer.luau +10 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/blink.luau +35 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/fetch.luau +12 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/fetchServer.luau +7 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/getPlayerPlaceInstance.luau +20 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/getPlayerPlaceInstanceServer.luau +28 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/position.luau +30 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/thru.luau +50 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/uptime.luau +6 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/uptimeServer.luau +12 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/version.luau +12 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/alias.luau +22 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/bind.luau +104 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/clear.luau +20 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/convertTimestamp.luau +18 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/echo.luau +17 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/edit.luau +75 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/exit.luau +11 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/history.luau +27 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/hover.luau +21 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/jsonArrayDecode.luau +25 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/jsonArrayEncode.luau +18 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/len.luau +16 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/math.luau +36 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/pick.luau +21 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/rand.luau +27 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/replace.luau +32 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/resolve.luau +32 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/run.luau +20 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/runLines.luau +34 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/runif.luau +95 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/unbind.luau +27 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/var.luau +29 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/varServer.luau +37 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/varSet.luau +30 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/varSetServer.luau +29 -0
- package/runtime/Cmdr/BuiltInCommands/help.luau +96 -0
- package/runtime/Cmdr/BuiltInTypes/BrickColor.luau +258 -0
- package/runtime/Cmdr/BuiltInTypes/Color3.luau +59 -0
- package/runtime/Cmdr/BuiltInTypes/Command.luau +23 -0
- package/runtime/Cmdr/BuiltInTypes/Duration.luau +111 -0
- package/runtime/Cmdr/BuiltInTypes/JSON.luau +13 -0
- package/runtime/Cmdr/BuiltInTypes/MathOperator.luau +43 -0
- package/runtime/Cmdr/BuiltInTypes/Player.luau +36 -0
- package/runtime/Cmdr/BuiltInTypes/PlayerId.luau +66 -0
- package/runtime/Cmdr/BuiltInTypes/Primitives.luau +145 -0
- package/runtime/Cmdr/BuiltInTypes/StoredKey.luau +33 -0
- package/runtime/Cmdr/BuiltInTypes/Team.luau +49 -0
- package/runtime/Cmdr/BuiltInTypes/Type.luau +23 -0
- package/runtime/Cmdr/BuiltInTypes/URL.luau +18 -0
- package/runtime/Cmdr/BuiltInTypes/UserInput.luau +32 -0
- package/runtime/Cmdr/BuiltInTypes/Vector.luau +58 -0
- package/runtime/Cmdr/CmdrClient/CmdrInterface/AutoComplete.luau +240 -0
- package/runtime/Cmdr/CmdrClient/CmdrInterface/CreateGui.luau +227 -0
- package/runtime/Cmdr/CmdrClient/CmdrInterface/Window.luau +713 -0
- package/runtime/Cmdr/CmdrClient/CmdrInterface/init.luau +18 -0
- package/runtime/Cmdr/CmdrClient/DefaultEventHandlers.luau +18 -0
- package/runtime/Cmdr/CmdrClient/Shared/Argument.luau +395 -0
- package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/HasCharacter.luau +39 -0
- package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/IsDataStoreAvailable.luau +36 -0
- package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/MaxArrayLength.luau +10 -0
- package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/MaxStringLength.luau +10 -0
- package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/NonEmptyString.luau +10 -0
- package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/NotEquals.luau +8 -0
- package/runtime/Cmdr/CmdrClient/Shared/Command.luau +415 -0
- package/runtime/Cmdr/CmdrClient/Shared/Dispatcher.luau +407 -0
- package/runtime/Cmdr/CmdrClient/Shared/Registry.luau +717 -0
- package/runtime/Cmdr/CmdrClient/Shared/Util.luau +879 -0
- package/runtime/Cmdr/CmdrClient/init.luau +377 -0
- package/runtime/Cmdr/LICENSE +21 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/announce.luau +21 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/announceServer.luau +17 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/ban.luau +59 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/banServer.luau +30 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/gotoPlace.luau +35 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/gotoPlaceServer.luau +17 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/kick.luau +19 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/kickServer.luau +27 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/kill.luau +13 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/killServer.luau +13 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/respawn.luau +15 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/respawnServer.luau +7 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/teleport.luau +30 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/teleportServer.luau +26 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/unban.luau +26 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/unbanServer.luau +10 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/blink.luau +35 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/fetch.luau +12 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/fetchServer.luau +7 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/getPlayerPlaceInstance.luau +20 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/getPlayerPlaceInstanceServer.luau +28 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/position.luau +30 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/thru.luau +50 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/uptime.luau +6 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/uptimeServer.luau +12 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/version.luau +12 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/alias.luau +22 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/bind.luau +104 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/clear.luau +20 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/convertTimestamp.luau +18 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/echo.luau +17 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/edit.luau +75 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/exit.luau +11 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/history.luau +27 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/hover.luau +21 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/jsonArrayDecode.luau +25 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/jsonArrayEncode.luau +18 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/len.luau +16 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/math.luau +36 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/pick.luau +21 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/rand.luau +27 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/replace.luau +32 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/resolve.luau +32 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/run.luau +20 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/runLines.luau +34 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/runif.luau +95 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/unbind.luau +27 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/var.luau +29 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/varServer.luau +37 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/varSet.luau +30 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/varSetServer.luau +29 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/help.luau +96 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/BrickColor.luau +258 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Color3.luau +59 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Command.luau +23 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Duration.luau +111 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/JSON.luau +13 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/MathOperator.luau +43 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Player.luau +36 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/PlayerId.luau +66 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Primitives.luau +145 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/StoredKey.luau +33 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Team.luau +49 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Type.luau +23 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/URL.luau +18 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/UserInput.luau +32 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Vector.luau +58 -0
- package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/AutoComplete.luau +240 -0
- package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/CreateGui.luau +227 -0
- package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/Window.luau +713 -0
- package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/init.luau +18 -0
- package/runtime/Cmdr/_impl/CmdrClient/DefaultEventHandlers.luau +18 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/Argument.luau +395 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/HasCharacter.luau +39 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/IsDataStoreAvailable.luau +36 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/MaxArrayLength.luau +10 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/MaxStringLength.luau +10 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/NonEmptyString.luau +10 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/NotEquals.luau +8 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/Command.luau +415 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/Dispatcher.luau +407 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/Registry.luau +717 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/Util.luau +879 -0
- package/runtime/Cmdr/_impl/CmdrClient/init.luau +377 -0
- package/runtime/Cmdr/_impl/LICENSE +21 -0
- package/runtime/Cmdr/_impl/init.luau +178 -0
- package/runtime/Cmdr/init.luau +8 -0
- package/runtime/DataService/Client.luau +209 -0
- package/runtime/DataService/Data.luau +886 -0
- package/runtime/DataService/Enum.luau +6 -0
- package/runtime/DataService/Enums.luau +10 -0
- package/runtime/DataService/Packages/quicknet/DataTypes.luau +70 -0
- package/runtime/DataService/Packages/quicknet/Enums.luau +85 -0
- package/runtime/DataService/Packages/quicknet/EnumsToNativeTypes.luau +57 -0
- package/runtime/DataService/Packages/quicknet/Parser.luau +355 -0
- package/runtime/DataService/Packages/quicknet/QuickNet.luau +953 -0
- package/runtime/DataService/Packages/quicknet/Serialize.luau +2020 -0
- package/runtime/DataService/Packages/quicknet/Types.luau +72 -0
- package/runtime/DataService/Packages/quicknet/init.luau +1 -0
- package/runtime/DataService/Packages/signal/init.luau +433 -0
- package/runtime/DataService/Path.luau +236 -0
- package/runtime/DataService/ProfileStore.luau +2243 -0
- package/runtime/DataService/Replicator.luau +172 -0
- package/runtime/DataService/Server.luau +412 -0
- package/runtime/DataService/init.luau +204 -0
- package/runtime/Display/LICENSE +201 -0
- package/runtime/Display/_impl/LICENSE +201 -0
- package/runtime/Display/_impl/init.luau +269 -0
- package/runtime/Display/_impl/option.luau +237 -0
- package/runtime/Display/init.luau +10 -0
- package/runtime/Display/option.luau +237 -0
- package/runtime/EzVisualz/Dropshadow.luau +148 -0
- package/runtime/EzVisualz/Gradient.luau +452 -0
- package/runtime/EzVisualz/GradientTemplates/Bubblegum.luau +16 -0
- package/runtime/EzVisualz/GradientTemplates/Chrome.luau +16 -0
- package/runtime/EzVisualz/GradientTemplates/Death.luau +15 -0
- package/runtime/EzVisualz/GradientTemplates/Electric.luau +14 -0
- package/runtime/EzVisualz/GradientTemplates/Fire.luau +13 -0
- package/runtime/EzVisualz/GradientTemplates/Galaxy.luau +11 -0
- package/runtime/EzVisualz/GradientTemplates/Ghost.luau +16 -0
- package/runtime/EzVisualz/GradientTemplates/Gold.luau +14 -0
- package/runtime/EzVisualz/GradientTemplates/Green.luau +14 -0
- package/runtime/EzVisualz/GradientTemplates/Ice.luau +14 -0
- package/runtime/EzVisualz/GradientTemplates/Lava.luau +15 -0
- package/runtime/EzVisualz/GradientTemplates/Matrix.luau +19 -0
- package/runtime/EzVisualz/GradientTemplates/Neon.luau +12 -0
- package/runtime/EzVisualz/GradientTemplates/Oceanic.luau +15 -0
- package/runtime/EzVisualz/GradientTemplates/Rainbow.luau +13 -0
- package/runtime/EzVisualz/GradientTemplates/Silver.luau +12 -0
- package/runtime/EzVisualz/GradientTemplates/Sunset.luau +11 -0
- package/runtime/EzVisualz/GradientTemplates/Zebra.luau +18 -0
- package/runtime/EzVisualz/GradientTemplates/init.luau +9 -0
- package/runtime/EzVisualz/LICENSE.md +21 -0
- package/runtime/EzVisualz/Presets/Bubblegum.luau +36 -0
- package/runtime/EzVisualz/Presets/ChromeStroke.luau +15 -0
- package/runtime/EzVisualz/Presets/DeathStroke.luau +15 -0
- package/runtime/EzVisualz/Presets/ElectricStroke.luau +54 -0
- package/runtime/EzVisualz/Presets/FireStroke.luau +29 -0
- package/runtime/EzVisualz/Presets/GalaxyStroke.luau +31 -0
- package/runtime/EzVisualz/Presets/Ghost.luau +10 -0
- package/runtime/EzVisualz/Presets/GhostStroke.luau +15 -0
- package/runtime/EzVisualz/Presets/Gold.luau +10 -0
- package/runtime/EzVisualz/Presets/GoldStroke.luau +15 -0
- package/runtime/EzVisualz/Presets/GreenOutline.luau +23 -0
- package/runtime/EzVisualz/Presets/IceStroke.luau +15 -0
- package/runtime/EzVisualz/Presets/Lava.luau +9 -0
- package/runtime/EzVisualz/Presets/LavaStroke.luau +13 -0
- package/runtime/EzVisualz/Presets/Matrix.luau +21 -0
- package/runtime/EzVisualz/Presets/NeonStroke.luau +30 -0
- package/runtime/EzVisualz/Presets/OceanicStroke.luau +15 -0
- package/runtime/EzVisualz/Presets/Rainbow.luau +9 -0
- package/runtime/EzVisualz/Presets/RainbowOutline.luau +23 -0
- package/runtime/EzVisualz/Presets/RainbowStroke.luau +13 -0
- package/runtime/EzVisualz/Presets/Shine.luau +48 -0
- package/runtime/EzVisualz/Presets/ShineOutline.luau +66 -0
- package/runtime/EzVisualz/Presets/Silver.luau +10 -0
- package/runtime/EzVisualz/Presets/SilverStroke.luau +15 -0
- package/runtime/EzVisualz/Presets/SunsetStroke.luau +31 -0
- package/runtime/EzVisualz/Presets/WaveStroke.luau +33 -0
- package/runtime/EzVisualz/Presets/Zebra.luau +21 -0
- package/runtime/EzVisualz/Presets/init.luau +9 -0
- package/runtime/EzVisualz/Stroke.luau +167 -0
- package/runtime/EzVisualz/Util.luau +7 -0
- package/runtime/EzVisualz/_impl/Dropshadow.luau +148 -0
- package/runtime/EzVisualz/_impl/Gradient.luau +452 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Bubblegum.luau +16 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Chrome.luau +16 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Death.luau +15 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Electric.luau +14 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Fire.luau +13 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Galaxy.luau +11 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Ghost.luau +16 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Gold.luau +14 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Green.luau +14 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Ice.luau +14 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Lava.luau +15 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Matrix.luau +19 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Neon.luau +12 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Oceanic.luau +15 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Rainbow.luau +13 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Silver.luau +12 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Sunset.luau +11 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Zebra.luau +18 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/init.luau +9 -0
- package/runtime/EzVisualz/_impl/LICENSE.md +21 -0
- package/runtime/EzVisualz/_impl/Presets/Bubblegum.luau +36 -0
- package/runtime/EzVisualz/_impl/Presets/ChromeStroke.luau +15 -0
- package/runtime/EzVisualz/_impl/Presets/DeathStroke.luau +15 -0
- package/runtime/EzVisualz/_impl/Presets/ElectricStroke.luau +54 -0
- package/runtime/EzVisualz/_impl/Presets/FireStroke.luau +29 -0
- package/runtime/EzVisualz/_impl/Presets/GalaxyStroke.luau +31 -0
- package/runtime/EzVisualz/_impl/Presets/Ghost.luau +10 -0
- package/runtime/EzVisualz/_impl/Presets/GhostStroke.luau +15 -0
- package/runtime/EzVisualz/_impl/Presets/Gold.luau +10 -0
- package/runtime/EzVisualz/_impl/Presets/GoldStroke.luau +15 -0
- package/runtime/EzVisualz/_impl/Presets/GreenOutline.luau +23 -0
- package/runtime/EzVisualz/_impl/Presets/IceStroke.luau +15 -0
- package/runtime/EzVisualz/_impl/Presets/Lava.luau +9 -0
- package/runtime/EzVisualz/_impl/Presets/LavaStroke.luau +13 -0
- package/runtime/EzVisualz/_impl/Presets/Matrix.luau +21 -0
- package/runtime/EzVisualz/_impl/Presets/NeonStroke.luau +30 -0
- package/runtime/EzVisualz/_impl/Presets/OceanicStroke.luau +15 -0
- package/runtime/EzVisualz/_impl/Presets/Rainbow.luau +9 -0
- package/runtime/EzVisualz/_impl/Presets/RainbowOutline.luau +23 -0
- package/runtime/EzVisualz/_impl/Presets/RainbowStroke.luau +13 -0
- package/runtime/EzVisualz/_impl/Presets/Shine.luau +48 -0
- package/runtime/EzVisualz/_impl/Presets/ShineOutline.luau +66 -0
- package/runtime/EzVisualz/_impl/Presets/Silver.luau +10 -0
- package/runtime/EzVisualz/_impl/Presets/SilverStroke.luau +15 -0
- package/runtime/EzVisualz/_impl/Presets/SunsetStroke.luau +31 -0
- package/runtime/EzVisualz/_impl/Presets/WaveStroke.luau +33 -0
- package/runtime/EzVisualz/_impl/Presets/Zebra.luau +21 -0
- package/runtime/EzVisualz/_impl/Presets/init.luau +9 -0
- package/runtime/EzVisualz/_impl/Stroke.luau +167 -0
- package/runtime/EzVisualz/_impl/Util.luau +7 -0
- package/runtime/EzVisualz/_impl/init.luau +319 -0
- package/runtime/EzVisualz/_impl/wally.lock +8 -0
- package/runtime/EzVisualz/_impl/wally.toml +8 -0
- package/runtime/EzVisualz/init.luau +9 -0
- package/runtime/EzVisualz/wally.lock +8 -0
- package/runtime/EzVisualz/wally.toml +8 -0
- package/runtime/FormatNumber/LICENSE.md +25 -0
- package/runtime/FormatNumber/Main/DecimalFormatSymbols.lua +43 -0
- package/runtime/FormatNumber/Main/IntegerWidth.lua +41 -0
- package/runtime/FormatNumber/Main/Notation.lua +116 -0
- package/runtime/FormatNumber/Main/Precision.lua +179 -0
- package/runtime/FormatNumber/Main/init.lua +199 -0
- package/runtime/FormatNumber/Simple/init.lua +76 -0
- package/runtime/FormatNumber/Version.lua +82 -0
- package/runtime/FormatNumber/_impl/LICENSE.md +25 -0
- package/runtime/FormatNumber/_impl/Main/DecimalFormatSymbols.lua +43 -0
- package/runtime/FormatNumber/_impl/Main/IntegerWidth.lua +41 -0
- package/runtime/FormatNumber/_impl/Main/Notation.lua +116 -0
- package/runtime/FormatNumber/_impl/Main/Precision.lua +179 -0
- package/runtime/FormatNumber/_impl/Main/init.lua +199 -0
- package/runtime/FormatNumber/_impl/Simple/init.lua +76 -0
- package/runtime/FormatNumber/_impl/Version.lua +82 -0
- package/runtime/FormatNumber/_impl/_internal/class.lua +204 -0
- package/runtime/FormatNumber/_impl/_internal/decimal_conversion.lua +30 -0
- package/runtime/FormatNumber/_impl/_internal/enums.lua +55 -0
- package/runtime/FormatNumber/_impl/_internal/format.lua +342 -0
- package/runtime/FormatNumber/_impl/_internal/formatter_settings.lua +160 -0
- package/runtime/FormatNumber/_impl/_internal/init.lua +8 -0
- package/runtime/FormatNumber/_impl/_internal/skeleton.lua +541 -0
- package/runtime/FormatNumber/_impl/init.lua +20 -0
- package/runtime/FormatNumber/_internal/class.lua +204 -0
- package/runtime/FormatNumber/_internal/decimal_conversion.lua +30 -0
- package/runtime/FormatNumber/_internal/enums.lua +55 -0
- package/runtime/FormatNumber/_internal/format.lua +342 -0
- package/runtime/FormatNumber/_internal/formatter_settings.lua +160 -0
- package/runtime/FormatNumber/_internal/init.lua +8 -0
- package/runtime/FormatNumber/_internal/skeleton.lua +541 -0
- package/runtime/FormatNumber/init.lua +20 -0
- package/runtime/FormatNumber/init.luau +20 -0
- package/runtime/Fusion/Animation/ExternalTime.luau +84 -0
- package/runtime/Fusion/Animation/Spring.luau +313 -0
- package/runtime/Fusion/Animation/Stopwatch.luau +128 -0
- package/runtime/Fusion/Animation/Tween.luau +178 -0
- package/runtime/Fusion/Animation/getTweenDuration.luau +27 -0
- package/runtime/Fusion/Animation/getTweenRatio.luau +47 -0
- package/runtime/Fusion/Animation/lerpType.luau +164 -0
- package/runtime/Fusion/Animation/packType.luau +100 -0
- package/runtime/Fusion/Animation/springCoefficients.luau +80 -0
- package/runtime/Fusion/Animation/unpackType.luau +103 -0
- package/runtime/Fusion/Colour/Oklab.luau +70 -0
- package/runtime/Fusion/Colour/sRGB.luau +47 -0
- package/runtime/Fusion/External.luau +156 -0
- package/runtime/Fusion/ExternalDebug.luau +70 -0
- package/runtime/Fusion/Graph/Observer.luau +111 -0
- package/runtime/Fusion/Graph/castToGraph.luau +29 -0
- package/runtime/Fusion/Graph/change.luau +81 -0
- package/runtime/Fusion/Graph/depend.luau +33 -0
- package/runtime/Fusion/Graph/evaluate.luau +56 -0
- package/runtime/Fusion/Instances/Attribute.luau +58 -0
- package/runtime/Fusion/Instances/AttributeChange.luau +47 -0
- package/runtime/Fusion/Instances/AttributeOut.luau +63 -0
- package/runtime/Fusion/Instances/Child.luau +21 -0
- package/runtime/Fusion/Instances/Children.luau +148 -0
- package/runtime/Fusion/Instances/Hydrate.luau +29 -0
- package/runtime/Fusion/Instances/New.luau +48 -0
- package/runtime/Fusion/Instances/OnChange.luau +50 -0
- package/runtime/Fusion/Instances/OnEvent.luau +54 -0
- package/runtime/Fusion/Instances/Out.luau +69 -0
- package/runtime/Fusion/Instances/Tag.luau +61 -0
- package/runtime/Fusion/Instances/applyInstanceProps.luau +149 -0
- package/runtime/Fusion/Instances/defaultProps.luau +194 -0
- package/runtime/Fusion/LICENSE +21 -0
- package/runtime/Fusion/Logging/formatError.luau +49 -0
- package/runtime/Fusion/Logging/messages.luau +46 -0
- package/runtime/Fusion/Logging/parseError.luau +25 -0
- package/runtime/Fusion/Memory/checkLifetime.luau +134 -0
- package/runtime/Fusion/Memory/deriveScope.luau +24 -0
- package/runtime/Fusion/Memory/deriveScopeImpl.luau +40 -0
- package/runtime/Fusion/Memory/doCleanup.luau +91 -0
- package/runtime/Fusion/Memory/innerScope.luau +34 -0
- package/runtime/Fusion/Memory/insert.luau +22 -0
- package/runtime/Fusion/Memory/needsDestruction.luau +17 -0
- package/runtime/Fusion/Memory/scoped.luau +24 -0
- package/runtime/Fusion/RobloxExternal.luau +98 -0
- package/runtime/Fusion/State/Computed.luau +122 -0
- package/runtime/Fusion/State/For/Disassembly.luau +207 -0
- package/runtime/Fusion/State/For/ForTypes.luau +30 -0
- package/runtime/Fusion/State/For/init.luau +101 -0
- package/runtime/Fusion/State/ForKeys.luau +88 -0
- package/runtime/Fusion/State/ForPairs.luau +91 -0
- package/runtime/Fusion/State/ForValues.luau +88 -0
- package/runtime/Fusion/State/Value.luau +76 -0
- package/runtime/Fusion/State/castToState.luau +26 -0
- package/runtime/Fusion/State/peek.luau +31 -0
- package/runtime/Fusion/State/updateAll.luau +1 -0
- package/runtime/Fusion/Types.luau +318 -0
- package/runtime/Fusion/Utility/Contextual.luau +91 -0
- package/runtime/Fusion/Utility/Safe.luau +23 -0
- package/runtime/Fusion/Utility/isSimilar.luau +29 -0
- package/runtime/Fusion/Utility/merge.luau +35 -0
- package/runtime/Fusion/Utility/nameOf.luau +35 -0
- package/runtime/Fusion/Utility/never.luau +14 -0
- package/runtime/Fusion/Utility/nicknames.luau +11 -0
- package/runtime/Fusion/Utility/xtypeof.luau +27 -0
- package/runtime/Fusion/_impl/Animation/ExternalTime.luau +84 -0
- package/runtime/Fusion/_impl/Animation/Spring.luau +313 -0
- package/runtime/Fusion/_impl/Animation/Stopwatch.luau +128 -0
- package/runtime/Fusion/_impl/Animation/Tween.luau +178 -0
- package/runtime/Fusion/_impl/Animation/getTweenDuration.luau +27 -0
- package/runtime/Fusion/_impl/Animation/getTweenRatio.luau +47 -0
- package/runtime/Fusion/_impl/Animation/lerpType.luau +164 -0
- package/runtime/Fusion/_impl/Animation/packType.luau +100 -0
- package/runtime/Fusion/_impl/Animation/springCoefficients.luau +80 -0
- package/runtime/Fusion/_impl/Animation/unpackType.luau +103 -0
- package/runtime/Fusion/_impl/Colour/Oklab.luau +70 -0
- package/runtime/Fusion/_impl/Colour/sRGB.luau +47 -0
- package/runtime/Fusion/_impl/External.luau +156 -0
- package/runtime/Fusion/_impl/ExternalDebug.luau +70 -0
- package/runtime/Fusion/_impl/Graph/Observer.luau +111 -0
- package/runtime/Fusion/_impl/Graph/castToGraph.luau +29 -0
- package/runtime/Fusion/_impl/Graph/change.luau +81 -0
- package/runtime/Fusion/_impl/Graph/depend.luau +33 -0
- package/runtime/Fusion/_impl/Graph/evaluate.luau +56 -0
- package/runtime/Fusion/_impl/Instances/Attribute.luau +58 -0
- package/runtime/Fusion/_impl/Instances/AttributeChange.luau +47 -0
- package/runtime/Fusion/_impl/Instances/AttributeOut.luau +63 -0
- package/runtime/Fusion/_impl/Instances/Child.luau +21 -0
- package/runtime/Fusion/_impl/Instances/Children.luau +148 -0
- package/runtime/Fusion/_impl/Instances/Hydrate.luau +29 -0
- package/runtime/Fusion/_impl/Instances/New.luau +48 -0
- package/runtime/Fusion/_impl/Instances/OnChange.luau +50 -0
- package/runtime/Fusion/_impl/Instances/OnEvent.luau +54 -0
- package/runtime/Fusion/_impl/Instances/Out.luau +69 -0
- package/runtime/Fusion/_impl/Instances/Tag.luau +61 -0
- package/runtime/Fusion/_impl/Instances/applyInstanceProps.luau +149 -0
- package/runtime/Fusion/_impl/Instances/defaultProps.luau +194 -0
- package/runtime/Fusion/_impl/LICENSE +21 -0
- package/runtime/Fusion/_impl/Logging/formatError.luau +49 -0
- package/runtime/Fusion/_impl/Logging/messages.luau +46 -0
- package/runtime/Fusion/_impl/Logging/parseError.luau +25 -0
- package/runtime/Fusion/_impl/Memory/checkLifetime.luau +134 -0
- package/runtime/Fusion/_impl/Memory/deriveScope.luau +24 -0
- package/runtime/Fusion/_impl/Memory/deriveScopeImpl.luau +40 -0
- package/runtime/Fusion/_impl/Memory/doCleanup.luau +91 -0
- package/runtime/Fusion/_impl/Memory/innerScope.luau +34 -0
- package/runtime/Fusion/_impl/Memory/insert.luau +22 -0
- package/runtime/Fusion/_impl/Memory/needsDestruction.luau +17 -0
- package/runtime/Fusion/_impl/Memory/scoped.luau +24 -0
- package/runtime/Fusion/_impl/RobloxExternal.luau +98 -0
- package/runtime/Fusion/_impl/State/Computed.luau +122 -0
- package/runtime/Fusion/_impl/State/For/Disassembly.luau +207 -0
- package/runtime/Fusion/_impl/State/For/ForTypes.luau +30 -0
- package/runtime/Fusion/_impl/State/For/init.luau +101 -0
- package/runtime/Fusion/_impl/State/ForKeys.luau +88 -0
- package/runtime/Fusion/_impl/State/ForPairs.luau +91 -0
- package/runtime/Fusion/_impl/State/ForValues.luau +88 -0
- package/runtime/Fusion/_impl/State/Value.luau +76 -0
- package/runtime/Fusion/_impl/State/castToState.luau +26 -0
- package/runtime/Fusion/_impl/State/peek.luau +31 -0
- package/runtime/Fusion/_impl/State/updateAll.luau +1 -0
- package/runtime/Fusion/_impl/Types.luau +318 -0
- package/runtime/Fusion/_impl/Utility/Contextual.luau +91 -0
- package/runtime/Fusion/_impl/Utility/Safe.luau +23 -0
- package/runtime/Fusion/_impl/Utility/isSimilar.luau +29 -0
- package/runtime/Fusion/_impl/Utility/merge.luau +35 -0
- package/runtime/Fusion/_impl/Utility/nameOf.luau +35 -0
- package/runtime/Fusion/_impl/Utility/never.luau +14 -0
- package/runtime/Fusion/_impl/Utility/nicknames.luau +11 -0
- package/runtime/Fusion/_impl/Utility/xtypeof.luau +27 -0
- package/runtime/Fusion/_impl/init.luau +83 -0
- package/runtime/Fusion/init.luau +27 -0
- package/runtime/Iris/API.lua +2085 -0
- package/runtime/Iris/Internal.lua +895 -0
- package/runtime/Iris/LICENSE.txt +21 -0
- package/runtime/Iris/PubTypes.lua +43 -0
- package/runtime/Iris/Types.lua +660 -0
- package/runtime/Iris/WidgetTypes.lua +521 -0
- package/runtime/Iris/_impl/API.lua +2085 -0
- package/runtime/Iris/_impl/Internal.lua +895 -0
- package/runtime/Iris/_impl/LICENSE.txt +21 -0
- package/runtime/Iris/_impl/PubTypes.lua +43 -0
- package/runtime/Iris/_impl/Types.lua +660 -0
- package/runtime/Iris/_impl/WidgetTypes.lua +521 -0
- package/runtime/Iris/_impl/config.lua +305 -0
- package/runtime/Iris/_impl/init.lua +696 -0
- package/runtime/Iris/_impl/widgets/Button.lua +90 -0
- package/runtime/Iris/_impl/widgets/Checkbox.lua +115 -0
- package/runtime/Iris/_impl/widgets/Combo.lua +492 -0
- package/runtime/Iris/_impl/widgets/Format.lua +140 -0
- package/runtime/Iris/_impl/widgets/Image.lua +155 -0
- package/runtime/Iris/_impl/widgets/Input.lua +1232 -0
- package/runtime/Iris/_impl/widgets/Menu.lua +599 -0
- package/runtime/Iris/_impl/widgets/Plot.lua +639 -0
- package/runtime/Iris/_impl/widgets/RadioButton.lua +126 -0
- package/runtime/Iris/_impl/widgets/Root.lua +143 -0
- package/runtime/Iris/_impl/widgets/Tab.lua +333 -0
- package/runtime/Iris/_impl/widgets/Table.lua +635 -0
- package/runtime/Iris/_impl/widgets/Text.lua +132 -0
- package/runtime/Iris/_impl/widgets/Tree.lua +287 -0
- package/runtime/Iris/_impl/widgets/Window.lua +1075 -0
- package/runtime/Iris/_impl/widgets/init.lua +447 -0
- package/runtime/Iris/config.lua +305 -0
- package/runtime/Iris/init.lua +696 -0
- package/runtime/Iris/init.luau +12 -0
- package/runtime/Iris/widgets/Button.lua +90 -0
- package/runtime/Iris/widgets/Checkbox.lua +115 -0
- package/runtime/Iris/widgets/Combo.lua +492 -0
- package/runtime/Iris/widgets/Format.lua +140 -0
- package/runtime/Iris/widgets/Image.lua +155 -0
- package/runtime/Iris/widgets/Input.lua +1232 -0
- package/runtime/Iris/widgets/Menu.lua +599 -0
- package/runtime/Iris/widgets/Plot.lua +639 -0
- package/runtime/Iris/widgets/RadioButton.lua +126 -0
- package/runtime/Iris/widgets/Root.lua +143 -0
- package/runtime/Iris/widgets/Tab.lua +333 -0
- package/runtime/Iris/widgets/Table.lua +635 -0
- package/runtime/Iris/widgets/Text.lua +132 -0
- package/runtime/Iris/widgets/Tree.lua +287 -0
- package/runtime/Iris/widgets/Window.lua +1075 -0
- package/runtime/Iris/widgets/init.lua +447 -0
- package/runtime/Janitor/FastDefer.luau +33 -0
- package/runtime/Janitor/LICENSE +21 -0
- package/runtime/Janitor/_impl/FastDefer.luau +33 -0
- package/runtime/Janitor/_impl/LICENSE +21 -0
- package/runtime/Janitor/_impl/init.luau +999 -0
- package/runtime/Janitor/init.luau +45 -0
- package/runtime/MathUtils/init.luau +100 -0
- package/runtime/Module3D/LICENSE +21 -0
- package/runtime/Module3D/_impl/LICENSE +21 -0
- package/runtime/Module3D/_impl/init.luau +269 -0
- package/runtime/Module3D/init.luau +14 -0
- package/runtime/Net/init.luau +125 -0
- package/runtime/Net/src/codec.luau +153 -0
- package/runtime/Occlude/init.luau +54 -0
- package/runtime/Promise/LICENSE +21 -0
- package/runtime/Promise/_impl/LICENSE +21 -0
- package/runtime/Promise/_impl/init.lua +1991 -0
- package/runtime/Promise/init.lua +1990 -0
- package/runtime/Promise/init.luau +13 -0
- package/runtime/Promise/types.luau +46 -0
- package/runtime/SOURCES.md +22 -0
- package/runtime/Spring/LICENSE +201 -0
- package/runtime/Spring/_impl/LICENSE +201 -0
- package/runtime/Spring/_impl/init.luau +111 -0
- package/runtime/Spring/init.luau +24 -0
- package/runtime/StateMachine/Classes/State.lua +375 -0
- package/runtime/StateMachine/Classes/Transition.lua +336 -0
- package/runtime/StateMachine/Functions/deepCopy.lua +19 -0
- package/runtime/StateMachine/Functions/mergeTables.lua +22 -0
- package/runtime/StateMachine/LICENSE +19 -0
- package/runtime/StateMachine/Vendor/Signal.lua +386 -0
- package/runtime/StateMachine/Vendor/Trove.lua +188 -0
- package/runtime/StateMachine/_impl/Classes/State.lua +375 -0
- package/runtime/StateMachine/_impl/Classes/Transition.lua +336 -0
- package/runtime/StateMachine/_impl/Functions/deepCopy.lua +19 -0
- package/runtime/StateMachine/_impl/Functions/mergeTables.lua +22 -0
- package/runtime/StateMachine/_impl/LICENSE +19 -0
- package/runtime/StateMachine/_impl/Vendor/Signal.lua +386 -0
- package/runtime/StateMachine/_impl/Vendor/Trove.lua +188 -0
- package/runtime/StateMachine/_impl/init.lua +595 -0
- package/runtime/StateMachine/init.lua +595 -0
- package/runtime/StateMachine/init.luau +10 -0
- package/runtime/StickyBillboard/init.luau +167 -0
- package/runtime/TopbarPlus/Attribute.lua +35 -0
- package/runtime/TopbarPlus/Elements/Caption.lua +316 -0
- package/runtime/TopbarPlus/Elements/Container.lua +215 -0
- package/runtime/TopbarPlus/Elements/Dropdown.lua +315 -0
- package/runtime/TopbarPlus/Elements/Indicator.lua +91 -0
- package/runtime/TopbarPlus/Elements/Menu.lua +180 -0
- package/runtime/TopbarPlus/Elements/Notice.lua +113 -0
- package/runtime/TopbarPlus/Elements/Selection.lua +49 -0
- package/runtime/TopbarPlus/Elements/Widget.lua +437 -0
- package/runtime/TopbarPlus/Features/Gamepad.lua +201 -0
- package/runtime/TopbarPlus/Features/Overflow.lua +360 -0
- package/runtime/TopbarPlus/Features/Themes/Classic.lua +27 -0
- package/runtime/TopbarPlus/Features/Themes/Default.lua +75 -0
- package/runtime/TopbarPlus/Features/Themes/init.lua +353 -0
- package/runtime/TopbarPlus/LICENSE +381 -0
- package/runtime/TopbarPlus/Packages/GoodSignal.lua +182 -0
- package/runtime/TopbarPlus/Packages/Janitor.lua +322 -0
- package/runtime/TopbarPlus/Reference.lua +30 -0
- package/runtime/TopbarPlus/Types.lua +477 -0
- package/runtime/TopbarPlus/Utility.lua +462 -0
- package/runtime/TopbarPlus/VERSION.lua +51 -0
- package/runtime/TopbarPlus/_impl/Attribute.lua +35 -0
- package/runtime/TopbarPlus/_impl/Elements/Caption.lua +316 -0
- package/runtime/TopbarPlus/_impl/Elements/Container.lua +215 -0
- package/runtime/TopbarPlus/_impl/Elements/Dropdown.lua +315 -0
- package/runtime/TopbarPlus/_impl/Elements/Indicator.lua +91 -0
- package/runtime/TopbarPlus/_impl/Elements/Menu.lua +180 -0
- package/runtime/TopbarPlus/_impl/Elements/Notice.lua +113 -0
- package/runtime/TopbarPlus/_impl/Elements/Selection.lua +49 -0
- package/runtime/TopbarPlus/_impl/Elements/Widget.lua +437 -0
- package/runtime/TopbarPlus/_impl/Features/Gamepad.lua +201 -0
- package/runtime/TopbarPlus/_impl/Features/Overflow.lua +360 -0
- package/runtime/TopbarPlus/_impl/Features/Themes/Classic.lua +27 -0
- package/runtime/TopbarPlus/_impl/Features/Themes/Default.lua +75 -0
- package/runtime/TopbarPlus/_impl/Features/Themes/init.lua +353 -0
- package/runtime/TopbarPlus/_impl/LICENSE +381 -0
- package/runtime/TopbarPlus/_impl/Packages/GoodSignal.lua +182 -0
- package/runtime/TopbarPlus/_impl/Packages/Janitor.lua +322 -0
- package/runtime/TopbarPlus/_impl/Reference.lua +30 -0
- package/runtime/TopbarPlus/_impl/Types.lua +477 -0
- package/runtime/TopbarPlus/_impl/Utility.lua +462 -0
- package/runtime/TopbarPlus/_impl/VERSION.lua +51 -0
- package/runtime/TopbarPlus/_impl/init.lua +1249 -0
- package/runtime/TopbarPlus/init.lua +1249 -0
- package/runtime/TopbarPlus/init.luau +8 -0
- package/runtime/Twinkle/init.luau +157 -0
- package/runtime/VfxUtil/init.luau +164 -0
- package/src/api.generated.js +3675 -0
- package/src/api.js +57 -0
- package/src/architecture.js +393 -0
- package/src/cli.js +192 -0
- package/src/compile.js +40 -0
- package/src/emit.js +213 -0
- package/src/lex.js +149 -0
- package/src/libs.js +355 -0
- package/src/parse.js +421 -0
- package/src/preprocess.js +80 -0
- package/src/understand.js +453 -0
- package/templates/game/.clangd +5 -0
- package/templates/game/.vscode/c_cpp_properties.json +23 -0
- package/templates/game/.vscode/settings.json +12 -0
- package/templates/game/Packages/.gitkeep +0 -0
- package/templates/game/cluaupp.config.json +6 -0
- package/templates/game/compile_flags.txt +3 -0
- package/templates/game/default.project.json +39 -0
- package/templates/game/package.json +9 -0
- package/templates/game/src/client/init.client.cpp +5 -0
- package/templates/game/src/server/leaderstats.server.cpp +28 -0
- package/templates/game/src/shared/config.cpp +5 -0
- package/templates/game/src/shared/config.h +3 -0
- package/templates/game/wally.toml +11 -0
|
@@ -0,0 +1,2020 @@
|
|
|
1
|
+
--!optimize 2
|
|
2
|
+
local Players = game:GetService("Players")
|
|
3
|
+
|
|
4
|
+
local Types = require(script.Parent.Types)
|
|
5
|
+
local Enums = require(script.Parent.Enums)
|
|
6
|
+
|
|
7
|
+
type SchemaArg = Types.SchemaArg
|
|
8
|
+
type Literal = Types.Literal
|
|
9
|
+
|
|
10
|
+
local FX8_SCALE = 10
|
|
11
|
+
local FX8_ROT_SCALE = 40.42
|
|
12
|
+
local FX16_SCALE = 100
|
|
13
|
+
local FX16_ROT_SCALE = 10430
|
|
14
|
+
local DYNAMIC_DEFAULTS = {
|
|
15
|
+
number = Enums.NumberF64,
|
|
16
|
+
CFrame = Enums.CFrameF32,
|
|
17
|
+
Vector3 = Enums.Vector3F32,
|
|
18
|
+
Vector2 = Enums.Vector2F32,
|
|
19
|
+
["nil"] = Enums.Nil,
|
|
20
|
+
string = Enums.String,
|
|
21
|
+
Color3 = Enums.Color3,
|
|
22
|
+
BrickColor = Enums.BrickColor,
|
|
23
|
+
boolean = Enums.Boolean,
|
|
24
|
+
table = Enums.DictDynamic,
|
|
25
|
+
buffer = Enums.Buffer,
|
|
26
|
+
Instance = Enums.Instance,
|
|
27
|
+
DateTime = Enums.DateTime64,
|
|
28
|
+
TweenInfo = Enums.TweenInfo,
|
|
29
|
+
ColorSequence = Enums.ColorSequence,
|
|
30
|
+
NumberSequence = Enums.NumberSequence,
|
|
31
|
+
NumberRange = Enums.NumberRange,
|
|
32
|
+
UDim = Enums.UDim,
|
|
33
|
+
UDim2 = Enums.UDim2,
|
|
34
|
+
Region3 = Enums.Region3,
|
|
35
|
+
PhysicalProperties = Enums.PhysicalProperties,
|
|
36
|
+
Rect = Enums.Rect,
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
local TBL_POOL_SIZE = 100
|
|
40
|
+
|
|
41
|
+
local writeu8 = buffer.writeu8
|
|
42
|
+
local writeu16 = buffer.writeu16
|
|
43
|
+
local writeu32 = buffer.writeu32
|
|
44
|
+
local writei8 = buffer.writei8
|
|
45
|
+
local writei16 = buffer.writei16
|
|
46
|
+
local writei32 = buffer.writei32
|
|
47
|
+
local writef32 = buffer.writef32
|
|
48
|
+
local writef64 = buffer.writef64
|
|
49
|
+
local writestring = buffer.writestring
|
|
50
|
+
local readu8 = buffer.readu8
|
|
51
|
+
local readu16 = buffer.readu16
|
|
52
|
+
local readu32 = buffer.readu32
|
|
53
|
+
local readi8 = buffer.readi8
|
|
54
|
+
local readi16 = buffer.readi16
|
|
55
|
+
local readi32 = buffer.readi32
|
|
56
|
+
local readf32 = buffer.readf32
|
|
57
|
+
local readf64 = buffer.readf64
|
|
58
|
+
local readstring = buffer.readstring
|
|
59
|
+
local bufferCopy = buffer.copy
|
|
60
|
+
local stringLen = string.len
|
|
61
|
+
local stringSub = string.sub
|
|
62
|
+
local mathFrexp = math.frexp
|
|
63
|
+
local mathFloor = math.floor
|
|
64
|
+
local mathHuge = math.huge
|
|
65
|
+
|
|
66
|
+
local tablePool = table.create(TBL_POOL_SIZE)
|
|
67
|
+
|
|
68
|
+
for i = 1, TBL_POOL_SIZE do
|
|
69
|
+
tablePool[i] = {}
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
@native local function getTable(): {any}
|
|
73
|
+
local poolIdx = #tablePool
|
|
74
|
+
local tbl = tablePool[poolIdx]
|
|
75
|
+
tablePool[poolIdx] = nil
|
|
76
|
+
return tbl or {}
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
@native local function recycleTable(tbl: {any})
|
|
80
|
+
local poolIdx = #tablePool
|
|
81
|
+
if poolIdx > TBL_POOL_SIZE then
|
|
82
|
+
return
|
|
83
|
+
end
|
|
84
|
+
table.clear(tbl)
|
|
85
|
+
tablePool[poolIdx + 1] = tbl
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
@native local function isArray(tbl: {any}): boolean
|
|
89
|
+
local count = 1
|
|
90
|
+
for i, val in tbl do
|
|
91
|
+
if i ~= count then
|
|
92
|
+
return false
|
|
93
|
+
end
|
|
94
|
+
count += 1
|
|
95
|
+
end
|
|
96
|
+
return true
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
@native local function getDataType(value: any): number?
|
|
100
|
+
local generalType = typeof(value)
|
|
101
|
+
local dataType = DYNAMIC_DEFAULTS[generalType] or Enums.Nil
|
|
102
|
+
|
|
103
|
+
if generalType == "table" then
|
|
104
|
+
if isArray(value) then
|
|
105
|
+
dataType = Enums.ArrayDynamic
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
return dataType
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
@native local function encodeFloat16(value: number): number
|
|
112
|
+
if value == 0 then
|
|
113
|
+
return value
|
|
114
|
+
end
|
|
115
|
+
local sign = 0
|
|
116
|
+
if value < 0 then
|
|
117
|
+
sign = 1
|
|
118
|
+
value = -value
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
local mantissa, exponent = mathFrexp(value)
|
|
122
|
+
local expNum = exponent + 14
|
|
123
|
+
if expNum <= 0 then
|
|
124
|
+
return 0
|
|
125
|
+
elseif expNum >= 31 then
|
|
126
|
+
return sign * 32768 + 31744
|
|
127
|
+
end
|
|
128
|
+
local mant = mantissa * 2048 - 1024
|
|
129
|
+
mant = mathFloor(mant + .5)
|
|
130
|
+
return sign * 32768 + expNum * 1024 + mant
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
@native local function decodeFloat16(value: number): number
|
|
134
|
+
if value == 0 then
|
|
135
|
+
return 0
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
local sign = (value >= 0x8000) and -1 or 1
|
|
139
|
+
if sign == -1 then
|
|
140
|
+
value -= 0x8000
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
local exponent = mathFloor(value / 1024)
|
|
144
|
+
local mantissa = value - exponent * 1024
|
|
145
|
+
|
|
146
|
+
if exponent == 0 then
|
|
147
|
+
return 0
|
|
148
|
+
elseif exponent == 31 then
|
|
149
|
+
return sign * mathHuge
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
local normalized = 1 + mantissa / 1024
|
|
153
|
+
return sign * normalized * 2^(exponent - 15)
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
--number
|
|
157
|
+
@native local function encodeNumberU8(buff: buffer, offset: number, arg: SchemaArg, value: number): number
|
|
158
|
+
writeu8(buff, offset, value)
|
|
159
|
+
return 1
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
@native local function encodeNumberU16(buff: buffer, offset: number, arg: SchemaArg, value: number): number
|
|
163
|
+
writeu16(buff, offset, value)
|
|
164
|
+
return 2
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
@native local function encodeNumberU32(buff: buffer, offset: number, arg: SchemaArg, value: number): number
|
|
168
|
+
writeu32(buff, offset, value)
|
|
169
|
+
return 4
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
@native local function encodeNumberI8(buff: buffer, offset: number, arg: SchemaArg, value: number): number
|
|
173
|
+
writei8(buff, offset, value)
|
|
174
|
+
return 1
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
@native local function encodeNumberI16(buff: buffer, offset: number, arg: SchemaArg, value: number): number
|
|
178
|
+
writei16(buff, offset, value)
|
|
179
|
+
return 2
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
@native local function encodeNumberI32(buff: buffer, offset: number, arg: SchemaArg, value: number): number
|
|
183
|
+
writei32(buff, offset, value)
|
|
184
|
+
return 4
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
@native local function encodeNumberF16(buff: buffer, offset: number, arg: SchemaArg, value: number): number
|
|
188
|
+
writeu16(buff, offset, encodeFloat16(value))
|
|
189
|
+
return 2
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
@native local function encodeNumberF32(buff: buffer, offset: number, arg: SchemaArg, value: number): number
|
|
193
|
+
writef32(buff, offset, value)
|
|
194
|
+
return 4
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
@native local function encodeNumberF64(buff: buffer, offset: number, arg: SchemaArg, value: number): number
|
|
198
|
+
writef64(buff, offset, value)
|
|
199
|
+
return 8
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
@native local function decodeNumberU8(buff: buffer, offset: number, arg: SchemaArg): (number, number)
|
|
203
|
+
return readu8(buff, offset), 1
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
@native local function decodeNumberU16(buff: buffer, offset: number, arg: SchemaArg): (number, number)
|
|
207
|
+
return readu16(buff, offset), 2
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
@native local function decodeNumberU32(buff: buffer, offset: number, arg: SchemaArg): (number, number)
|
|
211
|
+
return readu32(buff, offset), 4
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
@native local function decodeNumberI8(buff: buffer, offset: number, arg: SchemaArg): (number, number)
|
|
215
|
+
return readi8(buff, offset), 1
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
@native local function decodeNumberI16(buff: buffer, offset: number, arg: SchemaArg): (number, number)
|
|
219
|
+
return readi16(buff, offset), 2
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
@native local function decodeNumberI32(buff: buffer, offset: number, arg: SchemaArg): (number, number)
|
|
223
|
+
return readi32(buff, offset), 4
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
@native local function decodeNumberF16(buff: buffer, offset: number, arg: SchemaArg): (number, number)
|
|
227
|
+
return decodeFloat16(readu16(buff, offset)), 2
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
@native local function decodeNumberF32(buff: buffer, offset: number, arg: SchemaArg): (number, number)
|
|
231
|
+
return readf32(buff, offset), 4
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
@native local function decodeNumberF64(buff: buffer, offset: number, arg: SchemaArg): (number, number)
|
|
235
|
+
return readf64(buff, offset), 8
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
--cframe
|
|
239
|
+
@native local function encodeCFrameFX8(buff: buffer, offset: number, arg: SchemaArg, value: CFrame): number
|
|
240
|
+
local pos = value.Position
|
|
241
|
+
local x, y, z = value:ToEulerAnglesXYZ()
|
|
242
|
+
writei8(buff, offset, pos.X * FX8_SCALE)
|
|
243
|
+
writei8(buff, offset + 1, pos.Y * FX8_SCALE)
|
|
244
|
+
writei8(buff, offset + 2, pos.Z * FX8_SCALE)
|
|
245
|
+
writei8(buff, offset + 3, x * FX8_ROT_SCALE)
|
|
246
|
+
writei8(buff, offset + 4, y * FX8_ROT_SCALE)
|
|
247
|
+
writei8(buff, offset + 5, z * FX8_ROT_SCALE)
|
|
248
|
+
return 6
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
@native local function encodeCFrameI16FX16(buff: buffer, offset: number, arg: SchemaArg, value: CFrame): number
|
|
252
|
+
local pos = value.Position
|
|
253
|
+
local x, y, z = value:ToEulerAnglesXYZ()
|
|
254
|
+
writei16(buff, offset, pos.X)
|
|
255
|
+
writei16(buff, offset + 2, pos.Y)
|
|
256
|
+
writei16(buff, offset + 4, pos.Z)
|
|
257
|
+
writei16(buff, offset + 6, x * FX16_ROT_SCALE)
|
|
258
|
+
writei16(buff, offset + 8, y * FX16_ROT_SCALE)
|
|
259
|
+
writei16(buff, offset + 10, z * FX16_ROT_SCALE)
|
|
260
|
+
return 12
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
@native local function decodeCFrameI16FX16(buff: buffer, offset: number, arg: SchemaArg): (CFrame, number)
|
|
264
|
+
local pos = Vector3.new(
|
|
265
|
+
readi16(buff, offset),
|
|
266
|
+
readi16(buff, offset + 2),
|
|
267
|
+
readi16(buff, offset + 4)
|
|
268
|
+
)
|
|
269
|
+
local x = readi16(buff, offset + 6) / FX16_ROT_SCALE
|
|
270
|
+
local y = readi16(buff, offset + 8) / FX16_ROT_SCALE
|
|
271
|
+
local z = readi16(buff, offset + 10) / FX16_ROT_SCALE
|
|
272
|
+
return CFrame.Angles(x, y, z) + pos, 12
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
@native local function encodeCFrameFX16(buff: buffer, offset: number, arg: SchemaArg, value: CFrame): number
|
|
276
|
+
local pos = value.Position
|
|
277
|
+
local x, y, z = value:ToEulerAnglesXYZ()
|
|
278
|
+
writei16(buff, offset, pos.X * FX16_SCALE)
|
|
279
|
+
writei16(buff, offset + 2, pos.Y * FX16_SCALE)
|
|
280
|
+
writei16(buff, offset + 4, pos.Z * FX16_SCALE)
|
|
281
|
+
writei16(buff, offset + 6, x * FX16_ROT_SCALE)
|
|
282
|
+
writei16(buff, offset + 8, y * FX16_ROT_SCALE)
|
|
283
|
+
writei16(buff, offset + 10, z * FX16_ROT_SCALE)
|
|
284
|
+
return 12
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
@native local function encodeCFrameF16(buff: buffer, offset: number, arg: SchemaArg, value: CFrame): number
|
|
288
|
+
local pos = value.Position
|
|
289
|
+
local x, y, z = value:ToEulerAnglesXYZ()
|
|
290
|
+
writeu16(buff, offset, encodeFloat16(pos.X))
|
|
291
|
+
writeu16(buff, offset + 2, encodeFloat16(pos.Y))
|
|
292
|
+
writeu16(buff, offset + 4, encodeFloat16(pos.Z))
|
|
293
|
+
writeu16(buff, offset + 6, encodeFloat16(x))
|
|
294
|
+
writeu16(buff, offset + 8, encodeFloat16(y))
|
|
295
|
+
writeu16(buff, offset + 10, encodeFloat16(z))
|
|
296
|
+
return 12
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
@native local function axisId(x: number, y: number, z: number): number
|
|
300
|
+
local ax = math.abs(x)
|
|
301
|
+
local ay = math.abs(y)
|
|
302
|
+
local az = math.abs(z)
|
|
303
|
+
|
|
304
|
+
if ax >= ay and ax >= az then
|
|
305
|
+
return x > 0 and 0 or 1
|
|
306
|
+
elseif ay >= az then
|
|
307
|
+
return y > 0 and 2 or 3
|
|
308
|
+
else
|
|
309
|
+
return z > 0 and 4 or 5
|
|
310
|
+
end
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
local xAxis = Vector3.new(1, 0, 0)
|
|
314
|
+
local yAxis = Vector3.new(0, 1, 0)
|
|
315
|
+
local zAxis = Vector3.new(0, 0, 1)
|
|
316
|
+
|
|
317
|
+
local alignIdsToCFrames = {
|
|
318
|
+
[0] = CFrame.identity,
|
|
319
|
+
[1] = CFrame.identity,
|
|
320
|
+
[2] = CFrame.fromMatrix(Vector3.zero, xAxis, yAxis),
|
|
321
|
+
[3] = CFrame.fromMatrix(Vector3.zero, xAxis, -yAxis),
|
|
322
|
+
[4] = CFrame.fromMatrix(Vector3.zero, xAxis, zAxis),
|
|
323
|
+
[5] = CFrame.fromMatrix(Vector3.zero, xAxis, -zAxis),
|
|
324
|
+
|
|
325
|
+
[6] = CFrame.identity,
|
|
326
|
+
[7] = CFrame.identity,
|
|
327
|
+
[8] = CFrame.fromMatrix(Vector3.zero, -xAxis, yAxis),
|
|
328
|
+
[9] = CFrame.fromMatrix(Vector3.zero, -xAxis, -yAxis),
|
|
329
|
+
[10] = CFrame.fromMatrix(Vector3.zero, -xAxis, zAxis),
|
|
330
|
+
[11] = CFrame.fromMatrix(Vector3.zero, -xAxis, -zAxis),
|
|
331
|
+
|
|
332
|
+
[12] = CFrame.fromMatrix(Vector3.zero, yAxis, xAxis),
|
|
333
|
+
[13] = CFrame.fromMatrix(Vector3.zero, yAxis, -xAxis),
|
|
334
|
+
[14] = CFrame.identity,
|
|
335
|
+
[15] = CFrame.identity,
|
|
336
|
+
[16] = CFrame.fromMatrix(Vector3.zero, yAxis, zAxis),
|
|
337
|
+
[17] = CFrame.fromMatrix(Vector3.zero, yAxis, -zAxis),
|
|
338
|
+
|
|
339
|
+
[18] = CFrame.fromMatrix(Vector3.zero, -yAxis, xAxis),
|
|
340
|
+
[19] = CFrame.fromMatrix(Vector3.zero, -yAxis, -xAxis),
|
|
341
|
+
[20] = CFrame.identity,
|
|
342
|
+
[21] = CFrame.identity,
|
|
343
|
+
[22] = CFrame.fromMatrix(Vector3.zero, -yAxis, zAxis),
|
|
344
|
+
[23] = CFrame.fromMatrix(Vector3.zero, -yAxis, -zAxis),
|
|
345
|
+
|
|
346
|
+
[24] = CFrame.fromMatrix(Vector3.zero, zAxis, xAxis),
|
|
347
|
+
[25] = CFrame.fromMatrix(Vector3.zero, zAxis, -xAxis),
|
|
348
|
+
[26] = CFrame.fromMatrix(Vector3.zero, zAxis, yAxis),
|
|
349
|
+
[27] = CFrame.fromMatrix(Vector3.zero, zAxis, -yAxis),
|
|
350
|
+
[28] = CFrame.identity,
|
|
351
|
+
[29] = CFrame.identity,
|
|
352
|
+
|
|
353
|
+
[30] = CFrame.fromMatrix(Vector3.zero, -zAxis, xAxis),
|
|
354
|
+
[31] = CFrame.fromMatrix(Vector3.zero, -zAxis, -xAxis),
|
|
355
|
+
[32] = CFrame.fromMatrix(Vector3.zero, -zAxis, yAxis),
|
|
356
|
+
[33] = CFrame.fromMatrix(Vector3.zero, -zAxis, -yAxis),
|
|
357
|
+
[34] = CFrame.identity,
|
|
358
|
+
[35] = CFrame.identity,
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
@native local function encodeCFrameF32Aligned(buff: buffer, offset: number, arg: SchemaArg, value: CFrame): number
|
|
362
|
+
local x, y, z,
|
|
363
|
+
r00, r01, r02,
|
|
364
|
+
r10, r11, r12,
|
|
365
|
+
r20, r21, r22 = value:GetComponents()
|
|
366
|
+
local right = axisId(r00, r10, r20)
|
|
367
|
+
local up = axisId(r01, r11, r21)
|
|
368
|
+
writef32(buff, offset, x)
|
|
369
|
+
writef32(buff, offset + 4, y)
|
|
370
|
+
writef32(buff, offset + 8, z)
|
|
371
|
+
writeu8(buff, offset + 12, right * 6 + up)
|
|
372
|
+
return 13
|
|
373
|
+
end
|
|
374
|
+
|
|
375
|
+
@native local function decodeCFrameF32Aligned(buff: buffer, offset: number, arg: SchemaArg): (CFrame, number)
|
|
376
|
+
local x = readf32(buff, offset)
|
|
377
|
+
local y = readf32(buff, offset + 4)
|
|
378
|
+
local z = readf32(buff, offset + 8)
|
|
379
|
+
local alignId = readu8(buff, offset + 12)
|
|
380
|
+
return alignIdsToCFrames[alignId] + Vector3.new(x, y, z), 13
|
|
381
|
+
end
|
|
382
|
+
|
|
383
|
+
@native local function encodeCFrameF32FX16(buff: buffer, offset: number, arg: SchemaArg, value: CFrame): number
|
|
384
|
+
local pos = value.Position
|
|
385
|
+
local x, y, z = value:ToEulerAnglesXYZ()
|
|
386
|
+
writef32(buff, offset, pos.X)
|
|
387
|
+
writef32(buff, offset + 4, pos.Y)
|
|
388
|
+
writef32(buff, offset + 8, pos.Z)
|
|
389
|
+
writei16(buff, offset + 12, x * FX16_ROT_SCALE)
|
|
390
|
+
writei16(buff, offset + 14, y * FX16_ROT_SCALE)
|
|
391
|
+
writei16(buff, offset + 16, z * FX16_ROT_SCALE)
|
|
392
|
+
return 18
|
|
393
|
+
end
|
|
394
|
+
|
|
395
|
+
@native local function encodeCFrameF32(buff: buffer, offset: number, arg: SchemaArg, value: CFrame): number
|
|
396
|
+
local pos = value.Position
|
|
397
|
+
local x, y, z = value:ToEulerAnglesXYZ()
|
|
398
|
+
writef32(buff, offset, pos.X)
|
|
399
|
+
writef32(buff, offset + 4, pos.Y)
|
|
400
|
+
writef32(buff, offset + 8, pos.Z)
|
|
401
|
+
writef32(buff, offset + 12, x)
|
|
402
|
+
writef32(buff, offset + 16, y)
|
|
403
|
+
writef32(buff, offset + 20, z)
|
|
404
|
+
return 24
|
|
405
|
+
end
|
|
406
|
+
|
|
407
|
+
@native local function decodeCFrameFX8(buff: buffer, offset: number, arg: SchemaArg): (CFrame, number)
|
|
408
|
+
local posX = readi8(buff, offset) / FX8_SCALE
|
|
409
|
+
local posY = readi8(buff, offset + 1) / FX8_SCALE
|
|
410
|
+
local posZ = readi8(buff, offset + 2) / FX8_SCALE
|
|
411
|
+
local x = readi8(buff, offset + 3) / FX8_ROT_SCALE
|
|
412
|
+
local y = readi8(buff, offset + 4) / FX8_ROT_SCALE
|
|
413
|
+
local z = readi8(buff, offset + 5) / FX8_ROT_SCALE
|
|
414
|
+
return CFrame.Angles(x, y, z) + Vector3.new(posX, posY, posZ), 6
|
|
415
|
+
end
|
|
416
|
+
|
|
417
|
+
@native local function decodeCFrameFX16(buff: buffer, offset: number, arg: SchemaArg): (CFrame, number)
|
|
418
|
+
local posX = readi16(buff, offset) / FX16_SCALE
|
|
419
|
+
local posY = readi16(buff, offset + 2) / FX16_SCALE
|
|
420
|
+
local posZ = readi16(buff, offset + 4) / FX16_SCALE
|
|
421
|
+
local x = readi16(buff, offset + 6) / FX16_ROT_SCALE
|
|
422
|
+
local y = readi16(buff, offset + 8) / FX16_ROT_SCALE
|
|
423
|
+
local z = readi16(buff, offset + 10) / FX16_ROT_SCALE
|
|
424
|
+
return CFrame.Angles(x, y, z) + Vector3.new(posX, posY, posZ), 12
|
|
425
|
+
end
|
|
426
|
+
|
|
427
|
+
@native local function decodeCFrameF16(buff: buffer, offset: number, arg: SchemaArg): (CFrame, number)
|
|
428
|
+
local posX = decodeFloat16(readu16(buff, offset))
|
|
429
|
+
local posY = decodeFloat16(readu16(buff, offset + 2))
|
|
430
|
+
local posZ = decodeFloat16(readu16(buff, offset + 4))
|
|
431
|
+
local x = decodeFloat16(readu16(buff, offset + 6))
|
|
432
|
+
local y = decodeFloat16(readu16(buff, offset + 8))
|
|
433
|
+
local z = decodeFloat16(readu16(buff, offset + 10))
|
|
434
|
+
return CFrame.Angles(x, y, z) + Vector3.new(posX, posY, posZ), 12
|
|
435
|
+
end
|
|
436
|
+
|
|
437
|
+
@native local function decodeCFrameF32FX16(buff: buffer, offset: number, arg: SchemaArg): (CFrame, number)
|
|
438
|
+
local posX = readf32(buff, offset)
|
|
439
|
+
local posY = readf32(buff, offset + 4)
|
|
440
|
+
local posZ = readf32(buff, offset + 8)
|
|
441
|
+
local x = readi16(buff, offset + 12) / FX16_ROT_SCALE
|
|
442
|
+
local y = readi16(buff, offset + 14) / FX16_ROT_SCALE
|
|
443
|
+
local z = readi16(buff, offset + 16) / FX16_ROT_SCALE
|
|
444
|
+
return CFrame.Angles(x, y, z) + Vector3.new(posX, posY, posZ), 18
|
|
445
|
+
end
|
|
446
|
+
|
|
447
|
+
@native local function decodeCFrameF32(buff: buffer, offset: number, arg: SchemaArg): (CFrame, number)
|
|
448
|
+
local posX = readf32(buff, offset)
|
|
449
|
+
local posY = readf32(buff, offset + 4)
|
|
450
|
+
local posZ = readf32(buff, offset + 8)
|
|
451
|
+
local x = readf32(buff, offset + 12)
|
|
452
|
+
local y = readf32(buff, offset + 16)
|
|
453
|
+
local z = readf32(buff, offset + 20)
|
|
454
|
+
return CFrame.Angles(x, y, z) + Vector3.new(posX, posY, posZ), 24
|
|
455
|
+
end
|
|
456
|
+
|
|
457
|
+
--vector3
|
|
458
|
+
@native local function encodeVector3FX8(buff: buffer, offset: number, arg: SchemaArg, value: Vector3): number
|
|
459
|
+
writei8(buff, offset, value.X * FX8_SCALE)
|
|
460
|
+
writei8(buff, offset + 1, value.Y * FX8_SCALE)
|
|
461
|
+
writei8(buff, offset + 2, value.Z * FX8_SCALE)
|
|
462
|
+
return 3
|
|
463
|
+
end
|
|
464
|
+
|
|
465
|
+
@native local function encodeVector3I16(buff: buffer, offset: number, arg: SchemaArg, value: Vector3): number
|
|
466
|
+
writei16(buff, offset, value.X)
|
|
467
|
+
writei16(buff, offset + 2, value.Y)
|
|
468
|
+
writei16(buff, offset + 4, value.Z)
|
|
469
|
+
return 6
|
|
470
|
+
end
|
|
471
|
+
|
|
472
|
+
@native local function decodeVector3I16(buff: buffer, offset: number, arg: SchemaArg): (Vector3, number)
|
|
473
|
+
return Vector3.new(
|
|
474
|
+
readi16(buff, offset),
|
|
475
|
+
readi16(buff, offset + 2),
|
|
476
|
+
readi16(buff, offset + 4)
|
|
477
|
+
), 6
|
|
478
|
+
end
|
|
479
|
+
|
|
480
|
+
@native local function encodeVector3FX16(buff: buffer, offset: number, arg: SchemaArg, value: Vector3): number
|
|
481
|
+
writei16(buff, offset, value.X * FX16_SCALE)
|
|
482
|
+
writei16(buff, offset + 2, value.Y * FX16_SCALE)
|
|
483
|
+
writei16(buff, offset + 4, value.Z * FX16_SCALE)
|
|
484
|
+
return 6
|
|
485
|
+
end
|
|
486
|
+
|
|
487
|
+
@native local function encodeVector3F16(buff: buffer, offset: number, arg: SchemaArg, value: Vector3): number
|
|
488
|
+
writeu16(buff, offset, encodeFloat16(value.X))
|
|
489
|
+
writeu16(buff, offset + 2, encodeFloat16(value.Y))
|
|
490
|
+
writeu16(buff, offset + 4, encodeFloat16(value.Z))
|
|
491
|
+
return 6
|
|
492
|
+
end
|
|
493
|
+
|
|
494
|
+
@native local function encodeVector3F32(buff: buffer, offset: number, arg: SchemaArg, value: Vector3): number
|
|
495
|
+
writef32(buff, offset, value.X)
|
|
496
|
+
writef32(buff, offset + 4, value.Y)
|
|
497
|
+
writef32(buff, offset + 8, value.Z)
|
|
498
|
+
return 12
|
|
499
|
+
end
|
|
500
|
+
|
|
501
|
+
@native local function decodeVector3FX8(buff: buffer, offset: number, arg: SchemaArg): (Vector3, number)
|
|
502
|
+
local x = readi8(buff, offset) / FX8_SCALE
|
|
503
|
+
local y = readi8(buff, offset + 1) / FX8_SCALE
|
|
504
|
+
local z = readi8(buff, offset + 2) / FX8_SCALE
|
|
505
|
+
return Vector3.new(x, y, z), 3
|
|
506
|
+
end
|
|
507
|
+
|
|
508
|
+
@native local function decodeVector3FX16(buff: buffer, offset: number, arg: SchemaArg): (Vector3, number)
|
|
509
|
+
local x = readi16(buff, offset) / FX16_SCALE
|
|
510
|
+
local y = readi16(buff, offset + 2) / FX16_SCALE
|
|
511
|
+
local z = readi16(buff, offset + 4) / FX16_SCALE
|
|
512
|
+
return Vector3.new(x, y, z), 6
|
|
513
|
+
end
|
|
514
|
+
|
|
515
|
+
@native local function decodeVector3F16(buff: buffer, offset: number, arg: SchemaArg): (Vector3, number)
|
|
516
|
+
local x = decodeFloat16(readu16(buff, offset))
|
|
517
|
+
local y = decodeFloat16(readu16(buff, offset + 2))
|
|
518
|
+
local z = decodeFloat16(readu16(buff, offset + 4))
|
|
519
|
+
return Vector3.new(x, y, z), 6
|
|
520
|
+
end
|
|
521
|
+
|
|
522
|
+
@native local function decodeVector3F32(buff: buffer, offset: number, arg: SchemaArg): (Vector3, number)
|
|
523
|
+
return Vector3.new(
|
|
524
|
+
readf32(buff, offset),
|
|
525
|
+
readf32(buff, offset + 4),
|
|
526
|
+
readf32(buff, offset + 8)
|
|
527
|
+
), 12
|
|
528
|
+
end
|
|
529
|
+
|
|
530
|
+
--vector2
|
|
531
|
+
@native local function encodeVector2FX8(buff: buffer, offset: number, arg: SchemaArg, value: Vector2): number
|
|
532
|
+
writei8(buff, offset, value.X * FX8_SCALE)
|
|
533
|
+
writei8(buff, offset + 1, value.Y * FX8_SCALE)
|
|
534
|
+
return 2
|
|
535
|
+
end
|
|
536
|
+
|
|
537
|
+
@native local function encodeVector2I16(buff: buffer, offset: number, arg: SchemaArg, value: Vector2): number
|
|
538
|
+
writei16(buff, offset, value.X)
|
|
539
|
+
writei16(buff, offset + 2, value.Y)
|
|
540
|
+
return 4
|
|
541
|
+
end
|
|
542
|
+
|
|
543
|
+
@native local function decodeVector2I16(buff: buffer, offset: number, arg: SchemaArg): (Vector2, number)
|
|
544
|
+
return Vector2.new(readi16(buff, offset), readi16(buff, offset + 2)), 4
|
|
545
|
+
end
|
|
546
|
+
|
|
547
|
+
@native local function encodeVector2FX16(buff: buffer, offset: number, arg: SchemaArg, value: Vector2): number
|
|
548
|
+
writei16(buff, offset, value.X * FX16_SCALE)
|
|
549
|
+
writei16(buff, offset + 2, value.Y * FX16_SCALE)
|
|
550
|
+
return 4
|
|
551
|
+
end
|
|
552
|
+
|
|
553
|
+
@native local function encodeVector2F16(buff: buffer, offset: number, arg: SchemaArg, value: Vector2): number
|
|
554
|
+
writeu16(buff, offset, encodeFloat16(value.X))
|
|
555
|
+
writeu16(buff, offset + 2, encodeFloat16(value.Y))
|
|
556
|
+
return 4
|
|
557
|
+
end
|
|
558
|
+
|
|
559
|
+
@native local function encodeVector2F32(buff: buffer, offset: number, arg: SchemaArg, value: Vector2): number
|
|
560
|
+
writef32(buff, offset, value.X)
|
|
561
|
+
writef32(buff, offset + 4, value.Y)
|
|
562
|
+
return 8
|
|
563
|
+
end
|
|
564
|
+
|
|
565
|
+
@native local function decodeVector2FX8(buff: buffer, offset: number, arg: SchemaArg): (Vector2, number)
|
|
566
|
+
local x = readi8(buff, offset) / FX8_SCALE
|
|
567
|
+
local y = readi8(buff, offset + 1) / FX8_SCALE
|
|
568
|
+
return Vector2.new(x, y), 2
|
|
569
|
+
end
|
|
570
|
+
|
|
571
|
+
@native local function decodeVector2FX16(buff: buffer, offset: number, arg: SchemaArg): (Vector2, number)
|
|
572
|
+
local x = readi16(buff, offset) / FX16_SCALE
|
|
573
|
+
local y = readi16(buff, offset + 2) / FX16_SCALE
|
|
574
|
+
return Vector2.new(x, y), 4
|
|
575
|
+
end
|
|
576
|
+
|
|
577
|
+
@native local function decodeVector2F16(buff: buffer, offset: number, arg: SchemaArg): (Vector2, number)
|
|
578
|
+
local x = decodeFloat16(readu16(buff, offset))
|
|
579
|
+
local y = decodeFloat16(readu16(buff, offset + 2))
|
|
580
|
+
return Vector2.new(x, y), 4
|
|
581
|
+
end
|
|
582
|
+
|
|
583
|
+
@native local function decodeVector2F32(buff: buffer, offset: number, arg: SchemaArg): (Vector2, number)
|
|
584
|
+
local x = readf32(buff, offset)
|
|
585
|
+
local y = readf32(buff, offset + 4)
|
|
586
|
+
return Vector2.new(x, y), 8
|
|
587
|
+
end
|
|
588
|
+
|
|
589
|
+
--misc
|
|
590
|
+
@native local function encodeString(buff: buffer, offset: number, arg: SchemaArg, value: string): number
|
|
591
|
+
local bytes = stringLen(value)
|
|
592
|
+
writeu8(buff, offset, bytes)
|
|
593
|
+
writestring(buff, offset + 1, value, bytes)
|
|
594
|
+
return bytes + 1
|
|
595
|
+
end
|
|
596
|
+
|
|
597
|
+
@native local function decodeString(buff: buffer, offset: number, arg: SchemaArg): (string, number)
|
|
598
|
+
local bytes = readu8(buff, offset)
|
|
599
|
+
return readstring(buff, offset + 1, bytes), bytes + 1
|
|
600
|
+
end
|
|
601
|
+
|
|
602
|
+
@native local function encodeStringLong(buff: buffer, offset: number, arg: SchemaArg, value: string): number
|
|
603
|
+
local bytes = stringLen(value)
|
|
604
|
+
writeu32(buff, offset, bytes)
|
|
605
|
+
writestring(buff, offset + 4, value, bytes)
|
|
606
|
+
return bytes + 4
|
|
607
|
+
end
|
|
608
|
+
|
|
609
|
+
@native local function decodeStringLong(buff: buffer, offset: number, arg: SchemaArg, value: string): (string, number)
|
|
610
|
+
local bytes = readu32(buff, offset)
|
|
611
|
+
return readstring(buff, offset + 4, bytes), bytes + 4
|
|
612
|
+
end
|
|
613
|
+
|
|
614
|
+
@native local function encodeColor(buff: buffer, offset: number, arg: SchemaArg, value: Color3): number
|
|
615
|
+
writeu8(buff, offset, value.R * 255 + .5)
|
|
616
|
+
writeu8(buff, offset + 1, value.G * 255 + .5)
|
|
617
|
+
writeu8(buff, offset + 2, value.B * 255 + .5)
|
|
618
|
+
return 3
|
|
619
|
+
end
|
|
620
|
+
|
|
621
|
+
@native local function decodeColor(buff: buffer, offset: number, arg: SchemaArg): (Color3, number)
|
|
622
|
+
local r = readu8(buff, offset)
|
|
623
|
+
local g = readu8(buff, offset + 1)
|
|
624
|
+
local b = readu8(buff, offset + 2)
|
|
625
|
+
return Color3.fromRGB(r, g, b), 3
|
|
626
|
+
end
|
|
627
|
+
|
|
628
|
+
@native local function encodeBrickColor(buff: buffer, offset: number, arg: SchemaArg, value: BrickColor): number
|
|
629
|
+
writeu16(buff, offset, value.Number)
|
|
630
|
+
return 2
|
|
631
|
+
end
|
|
632
|
+
|
|
633
|
+
@native local function decodeBrickColor(buff: buffer, offset: number, arg: SchemaArg): (BrickColor, number)
|
|
634
|
+
return BrickColor.new(readu16(buff, offset)), 2
|
|
635
|
+
end
|
|
636
|
+
|
|
637
|
+
@native local function encodeBool(buff: buffer, offset: number, arg: SchemaArg, value: boolean): number
|
|
638
|
+
writeu8(buff, offset, value and 1 or 0)
|
|
639
|
+
return 1
|
|
640
|
+
end
|
|
641
|
+
|
|
642
|
+
@native local function decodeBool(buff: buffer, offset: number, arg: SchemaArg): (boolean, number)
|
|
643
|
+
local val = readu8(buff, offset)
|
|
644
|
+
return val == 1, 1
|
|
645
|
+
end
|
|
646
|
+
|
|
647
|
+
@native local function encodeNil(buff: buffer, offset: number, arg: SchemaArg, value: any): number
|
|
648
|
+
return 0
|
|
649
|
+
end
|
|
650
|
+
|
|
651
|
+
@native local function decodeNil(buff: buffer, offset: number, arg: SchemaArg): (any, number)
|
|
652
|
+
return nil, 0
|
|
653
|
+
end
|
|
654
|
+
|
|
655
|
+
@native local function encodeBuffer(buff: buffer, offset: number, arg: SchemaArg, value: buffer): number
|
|
656
|
+
local len = buffer.len(value)
|
|
657
|
+
writeu16(buff, offset, len)
|
|
658
|
+
bufferCopy(buff, offset + 2, value, 0, len)
|
|
659
|
+
return len + 2
|
|
660
|
+
end
|
|
661
|
+
|
|
662
|
+
@native local function decodeBuffer(buff: buffer, offset: number, arg: SchemaArg): (buffer?, number)
|
|
663
|
+
local len = readu16(buff, offset)
|
|
664
|
+
local newBuff = buffer.create(len)
|
|
665
|
+
bufferCopy(newBuff, 0, buff, offset + 2, len)
|
|
666
|
+
return newBuff, len + 2
|
|
667
|
+
end
|
|
668
|
+
|
|
669
|
+
@native local function encodeDateTime32(buff: buffer, offset: number, arg: SchemaArg, value: DateTime): number
|
|
670
|
+
writeu32(buff, offset, value.UnixTimestamp)
|
|
671
|
+
return 4
|
|
672
|
+
end
|
|
673
|
+
|
|
674
|
+
@native local function decodeDateTime32(buff: buffer, offset: number, arg: SchemaArg): (DateTime, number)
|
|
675
|
+
return DateTime.fromUnixTimestamp(readu32(buff, offset)), 4
|
|
676
|
+
end
|
|
677
|
+
|
|
678
|
+
@native local function encodeDateTime64(buff: buffer, offset: number, arg: SchemaArg, value: DateTime): number
|
|
679
|
+
writef64(buff, offset, value.UnixTimestampMillis)
|
|
680
|
+
return 8
|
|
681
|
+
end
|
|
682
|
+
|
|
683
|
+
@native local function decodeDateTime64(buff: buffer, offset: number, arg: SchemaArg): (DateTime, number)
|
|
684
|
+
return DateTime.fromUnixTimestampMillis(readf64(buff, offset)), 8
|
|
685
|
+
end
|
|
686
|
+
|
|
687
|
+
local tweenStyles = {
|
|
688
|
+
Enum.EasingStyle.Linear,
|
|
689
|
+
Enum.EasingStyle.Back,
|
|
690
|
+
Enum.EasingStyle.Quad,
|
|
691
|
+
Enum.EasingStyle.Bounce,
|
|
692
|
+
Enum.EasingStyle.Sine,
|
|
693
|
+
Enum.EasingStyle.Cubic,
|
|
694
|
+
Enum.EasingStyle.Quart,
|
|
695
|
+
Enum.EasingStyle.Quint,
|
|
696
|
+
Enum.EasingStyle.Elastic,
|
|
697
|
+
Enum.EasingStyle.Circular,
|
|
698
|
+
Enum.EasingStyle.Exponential,
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
local tweenDirections = {
|
|
702
|
+
Enum.EasingDirection.In,
|
|
703
|
+
Enum.EasingDirection.Out,
|
|
704
|
+
Enum.EasingDirection.InOut,
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
local function keyValueSwap(tbl: {[any]: any}): {[any]: any}
|
|
708
|
+
local new = {}
|
|
709
|
+
for k, v in tbl do
|
|
710
|
+
new[v] = k
|
|
711
|
+
end
|
|
712
|
+
return new
|
|
713
|
+
end
|
|
714
|
+
|
|
715
|
+
local tweenStylesToId: {[EnumItem]: number} = keyValueSwap(tweenStyles)
|
|
716
|
+
local tweenDirectionsToId: {[EnumItem]: number} = keyValueSwap(tweenDirections)
|
|
717
|
+
|
|
718
|
+
@native local function encodeTweenInfo(buff: buffer, offset: number, arg: SchemaArg, value: TweenInfo): number
|
|
719
|
+
local style = tweenStylesToId[value.EasingStyle]
|
|
720
|
+
local dir = tweenDirectionsToId[value.EasingDirection]
|
|
721
|
+
local reverse = value.Reverses and 1 or 0
|
|
722
|
+
local packed = style + dir * 16 + reverse * 128
|
|
723
|
+
|
|
724
|
+
writeu16(buff, offset, value.Time * FX16_SCALE)
|
|
725
|
+
writeu8(buff, offset + 2, packed)
|
|
726
|
+
writei8(buff, offset + 3, value.RepeatCount)
|
|
727
|
+
writeu16(buff, offset + 4, value.DelayTime * FX16_SCALE)
|
|
728
|
+
return 6
|
|
729
|
+
end
|
|
730
|
+
|
|
731
|
+
@native local function decodeTweenInfo(buff: buffer, offset: number, arg: SchemaArg): (TweenInfo, number)
|
|
732
|
+
local tweenTime = readu16(buff, offset) / FX16_SCALE
|
|
733
|
+
local packed = readu8(buff, offset + 2)
|
|
734
|
+
local repeatCount = readi8(buff, offset + 3)
|
|
735
|
+
local delayTime = readu16(buff, offset + 4) / FX16_SCALE
|
|
736
|
+
|
|
737
|
+
local styleId = packed % 16
|
|
738
|
+
local dirId = (packed // 16) % 8
|
|
739
|
+
local reverse = (packed // 128) == 1
|
|
740
|
+
|
|
741
|
+
local tweenInfo = TweenInfo.new(
|
|
742
|
+
tweenTime,
|
|
743
|
+
tweenStyles[styleId],
|
|
744
|
+
tweenDirections[dirId],
|
|
745
|
+
repeatCount,
|
|
746
|
+
reverse,
|
|
747
|
+
delayTime
|
|
748
|
+
)
|
|
749
|
+
return tweenInfo, 6
|
|
750
|
+
end
|
|
751
|
+
|
|
752
|
+
@native local function encodeColorSequence(buff: buffer, offset: number, arg: SchemaArg, value: ColorSequence)
|
|
753
|
+
:number
|
|
754
|
+
local keypoints = value.Keypoints
|
|
755
|
+
writeu8(buff, offset, #keypoints)
|
|
756
|
+
local ptr = offset + 1
|
|
757
|
+
|
|
758
|
+
for _, kp in keypoints do
|
|
759
|
+
local color = kp.Value
|
|
760
|
+
writeu8(buff, ptr, kp.Time * 255 + .5)
|
|
761
|
+
writeu8(buff, ptr + 1, color.R * 255 + .5)
|
|
762
|
+
writeu8(buff, ptr + 2, color.G * 255 + .5)
|
|
763
|
+
writeu8(buff, ptr + 3, color.B * 255 + .5)
|
|
764
|
+
ptr += 4
|
|
765
|
+
end
|
|
766
|
+
|
|
767
|
+
return ptr - offset
|
|
768
|
+
end
|
|
769
|
+
|
|
770
|
+
@native local function decodeColorSequence(buff: buffer, offset: number, arg: SchemaArg): (ColorSequence, number)
|
|
771
|
+
local len = readu8(buff, offset)
|
|
772
|
+
local ptr = offset + 1
|
|
773
|
+
local keypoints = table.create(len)
|
|
774
|
+
|
|
775
|
+
for i = 1, len do
|
|
776
|
+
keypoints[i] = ColorSequenceKeypoint.new(
|
|
777
|
+
readu8(buff, ptr) / 255,
|
|
778
|
+
Color3.fromRGB(
|
|
779
|
+
readu8(buff, ptr + 1),
|
|
780
|
+
readu8(buff, ptr + 2),
|
|
781
|
+
readu8(buff, ptr + 3)
|
|
782
|
+
)
|
|
783
|
+
)
|
|
784
|
+
ptr += 4
|
|
785
|
+
end
|
|
786
|
+
return ColorSequence.new(keypoints), ptr - offset
|
|
787
|
+
end
|
|
788
|
+
|
|
789
|
+
@native local function encodeNumberSequence(buff: buffer, offset: number, arg: SchemaArg, value: NumberSequence)
|
|
790
|
+
:number
|
|
791
|
+
local keypoints = value.Keypoints
|
|
792
|
+
writeu8(buff, offset, #keypoints)
|
|
793
|
+
local ptr = offset + 1
|
|
794
|
+
|
|
795
|
+
for _, kp in keypoints do
|
|
796
|
+
writeu8(buff, ptr, kp.Time * 255 + .5)
|
|
797
|
+
writeu8(buff, ptr + 1, kp.Value * 255 + .5)
|
|
798
|
+
writeu8(buff, ptr + 2, kp.Envelope * 255 + .5)
|
|
799
|
+
ptr += 3
|
|
800
|
+
end
|
|
801
|
+
return ptr - offset
|
|
802
|
+
end
|
|
803
|
+
|
|
804
|
+
@native local function decodeNumberSequence(buff: buffer, offset: number, arg: SchemaArg)
|
|
805
|
+
: (NumberSequence, number)
|
|
806
|
+
local len = readu8(buff, offset)
|
|
807
|
+
local ptr = offset + 1
|
|
808
|
+
local keypoints = table.create(len)
|
|
809
|
+
|
|
810
|
+
for i = 1, len do
|
|
811
|
+
keypoints[i] = NumberSequenceKeypoint.new(
|
|
812
|
+
readu8(buff, ptr) / 255,
|
|
813
|
+
readu8(buff, ptr + 1) / 255,
|
|
814
|
+
readu8(buff, ptr + 2) / 255
|
|
815
|
+
)
|
|
816
|
+
ptr += 3
|
|
817
|
+
end
|
|
818
|
+
return NumberSequence.new(keypoints), ptr - offset
|
|
819
|
+
end
|
|
820
|
+
|
|
821
|
+
@native local function encodeNumberRange(buff: buffer, offset: number, arg: SchemaArg, value: NumberRange)
|
|
822
|
+
:number
|
|
823
|
+
writef32(buff, offset, value.Min)
|
|
824
|
+
writef32(buff, offset + 4, value.Max)
|
|
825
|
+
return 8
|
|
826
|
+
end
|
|
827
|
+
|
|
828
|
+
@native local function decodeNumberRange(buff: buffer, offset: number, arg: SchemaArg): (NumberRange, number)
|
|
829
|
+
return NumberRange.new(readf32(buff, offset), readf32(buff, offset + 4)), 8
|
|
830
|
+
end
|
|
831
|
+
|
|
832
|
+
@native local function encodeUDim(buff: buffer, offset: number, arg: SchemaArg, value: UDim): number
|
|
833
|
+
writei16(buff, offset, value.Scale * 1000)
|
|
834
|
+
writei16(buff, offset + 2, value.Offset)
|
|
835
|
+
return 4
|
|
836
|
+
end
|
|
837
|
+
|
|
838
|
+
@native local function decodeUDim(buff: buffer, offset: number, arg: SchemaArg): (UDim, number)
|
|
839
|
+
return UDim.new(readi16(buff, offset) / 1000, readi16(buff, offset + 2)), 4
|
|
840
|
+
end
|
|
841
|
+
|
|
842
|
+
@native local function encodeUDim2(buff: buffer, offset: number, arg: SchemaArg, value: UDim2): number
|
|
843
|
+
local x, y = value.X, value.Y
|
|
844
|
+
writei16(buff, offset, x.Scale * 1000)
|
|
845
|
+
writei16(buff, offset + 2, x.Offset)
|
|
846
|
+
writei16(buff, offset + 4, y.Scale * 1000)
|
|
847
|
+
writei16(buff, offset + 6, y.Offset)
|
|
848
|
+
return 8
|
|
849
|
+
end
|
|
850
|
+
|
|
851
|
+
@native local function decodeUDim2(buff: buffer, offset: number, arg: SchemaArg): (UDim2, number)
|
|
852
|
+
return UDim2.new(
|
|
853
|
+
readi16(buff, offset) / 1000,
|
|
854
|
+
readi16(buff, offset + 2),
|
|
855
|
+
readi16(buff, offset + 4) / 1000,
|
|
856
|
+
readi16(buff, offset + 6)
|
|
857
|
+
), 8
|
|
858
|
+
end
|
|
859
|
+
|
|
860
|
+
@native local function encodeRegion3(buff: buffer, offset: number, arg: SchemaArg, value: Region3): number
|
|
861
|
+
local halfSize = value.Size / 2
|
|
862
|
+
local pos = value.CFrame.Position
|
|
863
|
+
local min, max = pos - halfSize, pos + halfSize
|
|
864
|
+
writef32(buff, offset, min.X)
|
|
865
|
+
writef32(buff, offset + 4, min.Y)
|
|
866
|
+
writef32(buff, offset + 8, min.Z)
|
|
867
|
+
writef32(buff, offset + 12, max.X)
|
|
868
|
+
writef32(buff, offset + 16, max.Y)
|
|
869
|
+
writef32(buff, offset + 20, max.Z)
|
|
870
|
+
return 24
|
|
871
|
+
end
|
|
872
|
+
|
|
873
|
+
@native local function decodeRegion3(buff: buffer, offset: number, arg: SchemaArg): (Region3, number)
|
|
874
|
+
return Region3.new(
|
|
875
|
+
Vector3.new(
|
|
876
|
+
readf32(buff, offset),
|
|
877
|
+
readf32(buff, offset + 4),
|
|
878
|
+
readf32(buff, offset + 8)
|
|
879
|
+
),
|
|
880
|
+
Vector3.new(
|
|
881
|
+
readf32(buff, offset + 12),
|
|
882
|
+
readf32(buff, offset + 16),
|
|
883
|
+
readf32(buff, offset + 20)
|
|
884
|
+
)
|
|
885
|
+
), 24
|
|
886
|
+
end
|
|
887
|
+
|
|
888
|
+
@native local function encodePhysicalProperties(buff: buffer, offset: number, arg: SchemaArg, value: PhysicalProperties)
|
|
889
|
+
:number
|
|
890
|
+
writeu16(buff, offset, value.Density * 655.35)
|
|
891
|
+
writeu8(buff, offset + 2, value.Friction * 127.5)
|
|
892
|
+
writeu8(buff, offset + 3, value.Elasticity * 255)
|
|
893
|
+
writeu16(buff, offset + 4, value.FrictionWeight * 655.35)
|
|
894
|
+
writeu16(buff, offset + 6, value.ElasticityWeight * 655.35)
|
|
895
|
+
writeu8(buff, offset + 8, value.AcousticAbsorption * 255)
|
|
896
|
+
return 9
|
|
897
|
+
end
|
|
898
|
+
|
|
899
|
+
@native local function decodePhysicalProperties(buff: buffer, offset: number, arg: SchemaArg)
|
|
900
|
+
:(PhysicalProperties, number)
|
|
901
|
+
return PhysicalProperties.new(
|
|
902
|
+
readu16(buff, offset) / 655.35,
|
|
903
|
+
readu8(buff, offset + 2) / 127.5,
|
|
904
|
+
readu8(buff, offset + 3) / 255,
|
|
905
|
+
readu16(buff, offset + 4) / 655.35,
|
|
906
|
+
readu16(buff, offset + 6) / 655.35,
|
|
907
|
+
readu8(buff, offset + 8) / 255
|
|
908
|
+
), 9
|
|
909
|
+
end
|
|
910
|
+
|
|
911
|
+
@native local function encodeRect(buff: buffer, offset: number, arg: SchemaArg, value: Rect): number
|
|
912
|
+
local min, max = value.Min, value.Max
|
|
913
|
+
writef32(buff, offset, min.X)
|
|
914
|
+
writef32(buff, offset + 4, min.Y)
|
|
915
|
+
writef32(buff, offset + 8, max.X)
|
|
916
|
+
writef32(buff, offset + 12, max.Y)
|
|
917
|
+
return 16
|
|
918
|
+
end
|
|
919
|
+
|
|
920
|
+
@native local function decodeRect(buff: buffer, offset: number, arg: SchemaArg): (Rect, number)
|
|
921
|
+
return Rect.new(
|
|
922
|
+
readf32(buff, offset),
|
|
923
|
+
readf32(buff, offset + 4),
|
|
924
|
+
readf32(buff, offset + 8),
|
|
925
|
+
readf32(buff, offset + 12)
|
|
926
|
+
), 16
|
|
927
|
+
end
|
|
928
|
+
|
|
929
|
+
@native local function encodeBulkNumberU4Array(buff: buffer, offset: number, array: {number}): number
|
|
930
|
+
local ptr = offset
|
|
931
|
+
local arrayLen = #array
|
|
932
|
+
local mod = arrayLen % 2
|
|
933
|
+
local iters = (arrayLen - mod) / 2
|
|
934
|
+
local nibPtr = 1
|
|
935
|
+
|
|
936
|
+
for i = 1, iters do
|
|
937
|
+
writeu8(buff, ptr, array[nibPtr] + array[nibPtr + 1] * 16)
|
|
938
|
+
ptr += 1
|
|
939
|
+
nibPtr += 2
|
|
940
|
+
end
|
|
941
|
+
|
|
942
|
+
if mod ~= 0 then
|
|
943
|
+
writeu8(buff, ptr, array[arrayLen])
|
|
944
|
+
end
|
|
945
|
+
return ptr - offset
|
|
946
|
+
end
|
|
947
|
+
|
|
948
|
+
@native local function decodeBulkNumberU4Array(buff: buffer, offset: number, arrayLen: number, tbl: {any}?)
|
|
949
|
+
:({number}, number)
|
|
950
|
+
local ptr = offset
|
|
951
|
+
local array = tbl or table.create(arrayLen)
|
|
952
|
+
local mod = arrayLen % 2
|
|
953
|
+
local iters = (arrayLen - mod) / 2
|
|
954
|
+
local nibPtr = 1
|
|
955
|
+
|
|
956
|
+
for i = 1, iters do
|
|
957
|
+
local b = readu8(buff, ptr)
|
|
958
|
+
local n2 = b // 16
|
|
959
|
+
local n1 = b - n2 * 16
|
|
960
|
+
array[nibPtr] = n1
|
|
961
|
+
array[nibPtr + 1] = n2
|
|
962
|
+
ptr += 1
|
|
963
|
+
nibPtr += 2
|
|
964
|
+
end
|
|
965
|
+
|
|
966
|
+
if mod ~= 0 then
|
|
967
|
+
array[arrayLen] = readu8(buff, ptr)
|
|
968
|
+
end
|
|
969
|
+
return array, ptr - offset
|
|
970
|
+
end
|
|
971
|
+
|
|
972
|
+
@native local function encodeBulkNumberU8Array(buff: buffer, offset: number, array: {number}): number
|
|
973
|
+
local ptr = offset
|
|
974
|
+
for _, val in array do
|
|
975
|
+
writeu8(buff, ptr, val)
|
|
976
|
+
ptr += 1
|
|
977
|
+
end
|
|
978
|
+
return ptr - offset
|
|
979
|
+
end
|
|
980
|
+
|
|
981
|
+
@native local function decodeBulkNumberU8Array(buff: buffer, offset: number, arrayLen: number, tbl: {any}?)
|
|
982
|
+
: ({number}, number)
|
|
983
|
+
local ptr = offset
|
|
984
|
+
local array = tbl or table.create(arrayLen)
|
|
985
|
+
local mod = arrayLen % 4
|
|
986
|
+
local iters = (arrayLen - mod) / 4
|
|
987
|
+
local bytePtr = 1
|
|
988
|
+
|
|
989
|
+
for i = 1, iters do
|
|
990
|
+
local b = readu32(buff, ptr)
|
|
991
|
+
local b1 = b // 256
|
|
992
|
+
local b2 = b1 // 256
|
|
993
|
+
local b3 = b2 // 256
|
|
994
|
+
array[bytePtr] = b - b1 * 256
|
|
995
|
+
array[bytePtr + 1] = b1 - b2 * 256
|
|
996
|
+
array[bytePtr + 2] = b2 - b3 * 256
|
|
997
|
+
array[bytePtr + 3] = b3
|
|
998
|
+
ptr += 4
|
|
999
|
+
bytePtr += 4
|
|
1000
|
+
end
|
|
1001
|
+
|
|
1002
|
+
for i = arrayLen - mod + 1, arrayLen do
|
|
1003
|
+
array[i] = readu8(buff, ptr)
|
|
1004
|
+
ptr += 1
|
|
1005
|
+
end
|
|
1006
|
+
return array, ptr - offset
|
|
1007
|
+
end
|
|
1008
|
+
|
|
1009
|
+
@native local function encodeBulkNumberI32Array(buff: buffer, offset: number, array: {number}): number
|
|
1010
|
+
local ptr = offset
|
|
1011
|
+
for _, val in array do
|
|
1012
|
+
writei32(buff, ptr, val)
|
|
1013
|
+
ptr += 4
|
|
1014
|
+
end
|
|
1015
|
+
return ptr - offset
|
|
1016
|
+
end
|
|
1017
|
+
|
|
1018
|
+
@native local function decodeBulkNumberI32Array(buff: buffer, offset: number, arrayLen: number, tbl: {any}?)
|
|
1019
|
+
: ({number}, number)
|
|
1020
|
+
local ptr = offset
|
|
1021
|
+
local array = tbl or table.create(arrayLen)
|
|
1022
|
+
for i = 1, arrayLen do
|
|
1023
|
+
array[i] = readi32(buff, ptr)
|
|
1024
|
+
ptr += 4
|
|
1025
|
+
end
|
|
1026
|
+
return array, ptr - offset
|
|
1027
|
+
end
|
|
1028
|
+
|
|
1029
|
+
@native local function encodeBulkNumberF32Array(buff: buffer, offset: number, array: {number}): number
|
|
1030
|
+
local ptr = offset
|
|
1031
|
+
for _, val in array do
|
|
1032
|
+
writef32(buff, ptr, val)
|
|
1033
|
+
ptr += 4
|
|
1034
|
+
end
|
|
1035
|
+
return ptr - offset
|
|
1036
|
+
end
|
|
1037
|
+
|
|
1038
|
+
@native local function decodeBulkNumberF32Array(buff: buffer, offset: number, arrayLen: number, tbl: {any}?)
|
|
1039
|
+
: ({number}, number)
|
|
1040
|
+
local ptr = offset
|
|
1041
|
+
local array = tbl or table.create(arrayLen)
|
|
1042
|
+
for i = 1, arrayLen do
|
|
1043
|
+
array[i] = readf32(buff, ptr)
|
|
1044
|
+
ptr += 4
|
|
1045
|
+
end
|
|
1046
|
+
return array, ptr - offset
|
|
1047
|
+
end
|
|
1048
|
+
|
|
1049
|
+
@native local function encodeBulkBoolArray(buff: buffer, offset: number, array: {boolean}): number
|
|
1050
|
+
local ptr = offset
|
|
1051
|
+
local arrayLen = #array
|
|
1052
|
+
local mod = arrayLen % 8
|
|
1053
|
+
local bitIters = (arrayLen - mod) / 8
|
|
1054
|
+
|
|
1055
|
+
local bitPtr = 1
|
|
1056
|
+
for i = 1, bitIters do
|
|
1057
|
+
writeu8(buff, ptr,
|
|
1058
|
+
(array[bitPtr] and 1 or 0) +
|
|
1059
|
+
(array[bitPtr + 1] and 2 or 0) +
|
|
1060
|
+
(array[bitPtr + 2] and 4 or 0) +
|
|
1061
|
+
(array[bitPtr + 3] and 8 or 0) +
|
|
1062
|
+
(array[bitPtr + 4] and 16 or 0) +
|
|
1063
|
+
(array[bitPtr + 5] and 32 or 0) +
|
|
1064
|
+
(array[bitPtr + 6] and 64 or 0) +
|
|
1065
|
+
(array[bitPtr + 7] and 128 or 0)
|
|
1066
|
+
)
|
|
1067
|
+
bitPtr += 8
|
|
1068
|
+
ptr += 1
|
|
1069
|
+
end
|
|
1070
|
+
|
|
1071
|
+
for i = arrayLen - mod + 1, arrayLen do
|
|
1072
|
+
writeu8(buff, ptr, array[i] and 1 or 0)
|
|
1073
|
+
ptr += 1
|
|
1074
|
+
end
|
|
1075
|
+
|
|
1076
|
+
return ptr - offset
|
|
1077
|
+
end
|
|
1078
|
+
|
|
1079
|
+
local byteToBools = table.create(256)
|
|
1080
|
+
local function buildByteToBools()
|
|
1081
|
+
for byte = 0, 255 do
|
|
1082
|
+
local t = table.create(8)
|
|
1083
|
+
local val = byte
|
|
1084
|
+
|
|
1085
|
+
for i = 1, 8 do
|
|
1086
|
+
t[i] = (val % 2) == 1
|
|
1087
|
+
val = val // 2
|
|
1088
|
+
end
|
|
1089
|
+
byteToBools[byte] = t
|
|
1090
|
+
end
|
|
1091
|
+
end
|
|
1092
|
+
|
|
1093
|
+
buildByteToBools()
|
|
1094
|
+
|
|
1095
|
+
@native local function decodeBulkBoolArray(buff: buffer, offset: number, arrayLen: number, tbl: {any}?)
|
|
1096
|
+
: ({boolean}, number)
|
|
1097
|
+
local ptr = offset
|
|
1098
|
+
local array = tbl or table.create(arrayLen)
|
|
1099
|
+
local mod = arrayLen % 8
|
|
1100
|
+
local bitIters = (arrayLen - mod) / 8
|
|
1101
|
+
local bitPtr = 1
|
|
1102
|
+
|
|
1103
|
+
for i = 1, bitIters do
|
|
1104
|
+
local byte = readu8(buff, ptr)
|
|
1105
|
+
ptr += 1
|
|
1106
|
+
|
|
1107
|
+
local bits = byteToBools[byte]
|
|
1108
|
+
array[bitPtr] = bits[1]
|
|
1109
|
+
array[bitPtr + 1] = bits[2]
|
|
1110
|
+
array[bitPtr + 2] = bits[3]
|
|
1111
|
+
array[bitPtr + 3] = bits[4]
|
|
1112
|
+
array[bitPtr + 4] = bits[5]
|
|
1113
|
+
array[bitPtr + 5] = bits[6]
|
|
1114
|
+
array[bitPtr + 6] = bits[7]
|
|
1115
|
+
array[bitPtr + 7] = bits[8]
|
|
1116
|
+
|
|
1117
|
+
bitPtr += 8
|
|
1118
|
+
end
|
|
1119
|
+
|
|
1120
|
+
for i = arrayLen - mod + 1, arrayLen do
|
|
1121
|
+
array[i] = readu8(buff, ptr) == 1
|
|
1122
|
+
ptr += 1
|
|
1123
|
+
end
|
|
1124
|
+
|
|
1125
|
+
return array, ptr - offset
|
|
1126
|
+
end
|
|
1127
|
+
|
|
1128
|
+
@native local function encodeBulkStringArray(buff: buffer, offset: number, array: {string}): number
|
|
1129
|
+
local totalLen = 0
|
|
1130
|
+
local ptr = offset
|
|
1131
|
+
|
|
1132
|
+
for _, str in array do
|
|
1133
|
+
local len = stringLen(str)
|
|
1134
|
+
writeu8(buff, ptr, len)
|
|
1135
|
+
ptr += 1
|
|
1136
|
+
totalLen += len
|
|
1137
|
+
end
|
|
1138
|
+
|
|
1139
|
+
local largeStr = table.concat(array)
|
|
1140
|
+
writestring(buff, ptr, largeStr, totalLen)
|
|
1141
|
+
return ptr + totalLen - offset
|
|
1142
|
+
end
|
|
1143
|
+
|
|
1144
|
+
@native local function decodeBulkStringArray(buff: buffer, offset: number, arrayLen: number, tbl: {any}?)
|
|
1145
|
+
: ({string}, number)
|
|
1146
|
+
local ptr = offset
|
|
1147
|
+
local lens = getTable()
|
|
1148
|
+
local totalLen = 0
|
|
1149
|
+
local array = tbl or table.create(arrayLen)
|
|
1150
|
+
for i = 1, arrayLen do
|
|
1151
|
+
local len = readu8(buff, ptr)
|
|
1152
|
+
lens[i] = len
|
|
1153
|
+
ptr += 1
|
|
1154
|
+
totalLen += len
|
|
1155
|
+
end
|
|
1156
|
+
|
|
1157
|
+
local largeStr = readstring(buff, ptr, totalLen)
|
|
1158
|
+
local largeStrPtr = 1
|
|
1159
|
+
|
|
1160
|
+
for i, len in lens do
|
|
1161
|
+
local start = largeStrPtr
|
|
1162
|
+
largeStrPtr += len
|
|
1163
|
+
array[i] = stringSub(largeStr, start, largeStrPtr - 1)
|
|
1164
|
+
end
|
|
1165
|
+
recycleTable(lens)
|
|
1166
|
+
return array, ptr + totalLen - offset
|
|
1167
|
+
end
|
|
1168
|
+
|
|
1169
|
+
@native local function encodeBulkNumberU8DictStatic(buff: buffer, offset: number, dict: {[any]: number}, keysMap: {any})
|
|
1170
|
+
: number
|
|
1171
|
+
local ptr = offset
|
|
1172
|
+
for _, key in keysMap do
|
|
1173
|
+
writeu8(buff, ptr, dict[key])
|
|
1174
|
+
ptr += 1
|
|
1175
|
+
end
|
|
1176
|
+
return ptr - offset
|
|
1177
|
+
end
|
|
1178
|
+
|
|
1179
|
+
@native local function decodeBulkNumberU8DictStatic(buff: buffer, offset: number, keysMap: {any},
|
|
1180
|
+
template: {[string | number]: any}): ({[any]: number}, number)
|
|
1181
|
+
local ptr = offset
|
|
1182
|
+
local dict = table.clone(template)
|
|
1183
|
+
for _, key in keysMap do
|
|
1184
|
+
dict[key] = readu8(buff, ptr)
|
|
1185
|
+
ptr += 1
|
|
1186
|
+
end
|
|
1187
|
+
return dict, ptr - offset
|
|
1188
|
+
end
|
|
1189
|
+
|
|
1190
|
+
@native local function encodeBulkNumberI32DictStatic(buff: buffer, offset: number, dict: {[any]: number}, keysMap: {any})
|
|
1191
|
+
: number
|
|
1192
|
+
local ptr = offset
|
|
1193
|
+
for _, key in keysMap do
|
|
1194
|
+
writei32(buff, ptr, dict[key])
|
|
1195
|
+
ptr += 4
|
|
1196
|
+
end
|
|
1197
|
+
return ptr - offset
|
|
1198
|
+
end
|
|
1199
|
+
|
|
1200
|
+
@native local function decodeBulkNumberI32DictStatic(buff: buffer, offset: number, keysMap: {any},
|
|
1201
|
+
template: {[string | number]: any}): ({[any]: number}, number)
|
|
1202
|
+
local ptr = offset
|
|
1203
|
+
local dict = table.clone(template)
|
|
1204
|
+
for _, key in keysMap do
|
|
1205
|
+
dict[key] = readi32(buff, ptr)
|
|
1206
|
+
ptr += 4
|
|
1207
|
+
end
|
|
1208
|
+
return dict, ptr - offset
|
|
1209
|
+
end
|
|
1210
|
+
|
|
1211
|
+
@native local function encodeBulkNumberF32DictStatic(buff: buffer, offset: number, dict: {[any]: number}, keysMap: {any})
|
|
1212
|
+
: number
|
|
1213
|
+
local ptr = offset
|
|
1214
|
+
|
|
1215
|
+
for _, key in keysMap do
|
|
1216
|
+
writef32(buff, ptr, dict[key])
|
|
1217
|
+
ptr += 4
|
|
1218
|
+
end
|
|
1219
|
+
return ptr - offset
|
|
1220
|
+
end
|
|
1221
|
+
|
|
1222
|
+
@native local function decodeBulkNumberF32DictStatic(buff: buffer, offset: number, keysMap: {any},
|
|
1223
|
+
template: {[string | number]: any}): ({[any]: number}, number)
|
|
1224
|
+
local ptr = offset
|
|
1225
|
+
local dict = table.clone(template)
|
|
1226
|
+
for _, key in keysMap do
|
|
1227
|
+
dict[key] = readf32(buff, ptr)
|
|
1228
|
+
ptr += 4
|
|
1229
|
+
end
|
|
1230
|
+
return dict, ptr - offset
|
|
1231
|
+
end
|
|
1232
|
+
|
|
1233
|
+
@native local function encodeBulkBoolDictStatic(buff: buffer, offset: number, dict: {[any]: boolean}, keysMap: {any})
|
|
1234
|
+
: number
|
|
1235
|
+
local ptr = offset
|
|
1236
|
+
for _, key in keysMap do
|
|
1237
|
+
writeu8(buff, ptr, dict[key] and 1 or 0)
|
|
1238
|
+
ptr += 1
|
|
1239
|
+
end
|
|
1240
|
+
return ptr - offset
|
|
1241
|
+
end
|
|
1242
|
+
|
|
1243
|
+
@native local function decodeBulkBoolDictStatic(buff: buffer, offset: number, keysMap: {any},
|
|
1244
|
+
template: {[string | number]: any}): ({[any]: boolean}, number)
|
|
1245
|
+
local ptr = offset
|
|
1246
|
+
local dict = table.clone(template)
|
|
1247
|
+
for _, key in keysMap do
|
|
1248
|
+
dict[key] = readu8(buff, ptr) == 1
|
|
1249
|
+
ptr += 1
|
|
1250
|
+
end
|
|
1251
|
+
return dict, ptr - offset
|
|
1252
|
+
end
|
|
1253
|
+
|
|
1254
|
+
@native local function encodeBulkStringDictStatic(buff: buffer, offset: number, dict: {[any]: string}, keysMap: {any})
|
|
1255
|
+
: number
|
|
1256
|
+
local ptr = offset
|
|
1257
|
+
local str = getTable()
|
|
1258
|
+
|
|
1259
|
+
for i, key in keysMap do
|
|
1260
|
+
local val = dict[key]
|
|
1261
|
+
local strLen = stringLen(val)
|
|
1262
|
+
writeu8(buff, ptr, strLen)
|
|
1263
|
+
ptr += 1
|
|
1264
|
+
str[i] = val
|
|
1265
|
+
end
|
|
1266
|
+
|
|
1267
|
+
local largeStr = table.concat(str)
|
|
1268
|
+
local totalStrLen = stringLen(largeStr)
|
|
1269
|
+
writestring(buff, ptr, largeStr, totalStrLen)
|
|
1270
|
+
ptr += totalStrLen
|
|
1271
|
+
recycleTable(str)
|
|
1272
|
+
return ptr - offset
|
|
1273
|
+
end
|
|
1274
|
+
|
|
1275
|
+
@native local function decodeBulkStringDictStatic(buff: buffer, offset: number, keysMap: {any},
|
|
1276
|
+
template: {[string | number]: any}): ({[any]: string}, number)
|
|
1277
|
+
local ptr = offset
|
|
1278
|
+
local dictLen = #keysMap
|
|
1279
|
+
local strPtr = 1
|
|
1280
|
+
local totalLen = 0
|
|
1281
|
+
local dict = table.clone(template)
|
|
1282
|
+
local lens = getTable()
|
|
1283
|
+
|
|
1284
|
+
for i = 1, dictLen do
|
|
1285
|
+
local len = readu8(buff, ptr)
|
|
1286
|
+
lens[i] = len
|
|
1287
|
+
totalLen += len
|
|
1288
|
+
ptr += 1
|
|
1289
|
+
end
|
|
1290
|
+
|
|
1291
|
+
local largeStr = readstring(buff, offset + dictLen, totalLen)
|
|
1292
|
+
for i, key in keysMap do
|
|
1293
|
+
local start = strPtr
|
|
1294
|
+
strPtr += lens[i]
|
|
1295
|
+
dict[key] = stringSub(largeStr, start, strPtr - 1)
|
|
1296
|
+
end
|
|
1297
|
+
recycleTable(lens)
|
|
1298
|
+
return dict, strPtr - offset
|
|
1299
|
+
end
|
|
1300
|
+
|
|
1301
|
+
@native local function encodeBulkNumberU8Dict(buff: buffer, offset: number, dict: {[any]: number}, keys: boolean?)
|
|
1302
|
+
: (number, number?)
|
|
1303
|
+
local ptr = offset
|
|
1304
|
+
local len
|
|
1305
|
+
|
|
1306
|
+
if keys then
|
|
1307
|
+
for key, val in dict do
|
|
1308
|
+
writeu8(buff, ptr, key)
|
|
1309
|
+
ptr += 1
|
|
1310
|
+
end
|
|
1311
|
+
len = ptr - offset
|
|
1312
|
+
else
|
|
1313
|
+
for key, val in dict do
|
|
1314
|
+
writeu8(buff, ptr, val)
|
|
1315
|
+
ptr += 1
|
|
1316
|
+
end
|
|
1317
|
+
end
|
|
1318
|
+
return ptr - offset, len
|
|
1319
|
+
end
|
|
1320
|
+
|
|
1321
|
+
@native local function encodeBulkNumberI32Dict(buff: buffer, offset: number, dict: {[any]: number}, keys: boolean?)
|
|
1322
|
+
: (number, number?)
|
|
1323
|
+
local ptr = offset
|
|
1324
|
+
local len
|
|
1325
|
+
|
|
1326
|
+
if keys then
|
|
1327
|
+
for key, val in dict do
|
|
1328
|
+
writei32(buff, ptr, key)
|
|
1329
|
+
ptr += 4
|
|
1330
|
+
end
|
|
1331
|
+
len = ptr - offset
|
|
1332
|
+
else
|
|
1333
|
+
for key, val in dict do
|
|
1334
|
+
writei32(buff, ptr, val)
|
|
1335
|
+
ptr += 4
|
|
1336
|
+
end
|
|
1337
|
+
end
|
|
1338
|
+
return ptr - offset, len
|
|
1339
|
+
end
|
|
1340
|
+
|
|
1341
|
+
@native local function encodeBulkNumberF32Dict(buff: buffer, offset: number, dict: {[any]: number}, keys: boolean)
|
|
1342
|
+
: (number, number?)
|
|
1343
|
+
local ptr = offset
|
|
1344
|
+
local len
|
|
1345
|
+
|
|
1346
|
+
if keys then
|
|
1347
|
+
for key, val in dict do
|
|
1348
|
+
writef32(buff, ptr, key)
|
|
1349
|
+
ptr += 4
|
|
1350
|
+
end
|
|
1351
|
+
len = (ptr - offset) / 4
|
|
1352
|
+
else
|
|
1353
|
+
for key, val in dict do
|
|
1354
|
+
writef32(buff, ptr, val)
|
|
1355
|
+
ptr += 4
|
|
1356
|
+
end
|
|
1357
|
+
end
|
|
1358
|
+
return ptr - offset, len
|
|
1359
|
+
end
|
|
1360
|
+
|
|
1361
|
+
@native local function encodeBulkBoolDict(buff: buffer, offset: number, dict: {[any]: boolean}, keys: boolean?)
|
|
1362
|
+
: (number, number?)
|
|
1363
|
+
local ptr = offset
|
|
1364
|
+
local len
|
|
1365
|
+
|
|
1366
|
+
if keys then
|
|
1367
|
+
for key, val in dict do
|
|
1368
|
+
writeu8(buff, ptr, key and 1 or 0)
|
|
1369
|
+
ptr += 1
|
|
1370
|
+
end
|
|
1371
|
+
len = ptr - offset
|
|
1372
|
+
else
|
|
1373
|
+
for key, val in dict do
|
|
1374
|
+
writeu8(buff, ptr, val and 1 or 0)
|
|
1375
|
+
ptr += 1
|
|
1376
|
+
end
|
|
1377
|
+
end
|
|
1378
|
+
return ptr - offset, len
|
|
1379
|
+
end
|
|
1380
|
+
|
|
1381
|
+
@native local function encodeBulkStringDict(buff: buffer, offset: number, dict: {[any]: string}, keys: boolean?)
|
|
1382
|
+
: (number, number?)
|
|
1383
|
+
local ptr = offset
|
|
1384
|
+
local str = getTable()
|
|
1385
|
+
|
|
1386
|
+
local len
|
|
1387
|
+
if keys then
|
|
1388
|
+
len = 0
|
|
1389
|
+
for key, val in dict do
|
|
1390
|
+
local strLen = stringLen(key)
|
|
1391
|
+
writeu8(buff, ptr, strLen)
|
|
1392
|
+
ptr += 1
|
|
1393
|
+
len += 1
|
|
1394
|
+
str[len] = key
|
|
1395
|
+
end
|
|
1396
|
+
else
|
|
1397
|
+
local count = 0
|
|
1398
|
+
for key, val in dict do
|
|
1399
|
+
local strLen = stringLen(val)
|
|
1400
|
+
writeu8(buff, ptr, strLen)
|
|
1401
|
+
ptr += 1
|
|
1402
|
+
count += 1
|
|
1403
|
+
str[count] = val
|
|
1404
|
+
end
|
|
1405
|
+
end
|
|
1406
|
+
local largeStr = table.concat(str)
|
|
1407
|
+
local totalStrLen = stringLen(largeStr)
|
|
1408
|
+
writestring(buff, ptr, largeStr, totalStrLen)
|
|
1409
|
+
ptr += totalStrLen
|
|
1410
|
+
recycleTable(str)
|
|
1411
|
+
return ptr - offset, len
|
|
1412
|
+
end
|
|
1413
|
+
|
|
1414
|
+
local enumItems: {EnumItem} = {}
|
|
1415
|
+
local enumItemsByEnum: {[EnumItem]: number} = {}
|
|
1416
|
+
local encodeData: {[number]: (buffer, number, any, any?, any?) -> number}
|
|
1417
|
+
local decodeData: {[number]: (buffer, number, any?, any?) -> (any, number)}
|
|
1418
|
+
|
|
1419
|
+
@native local function encodeEnumItem(buff: buffer, offset: number, arg: SchemaArg, value: EnumItem): number
|
|
1420
|
+
writeu16(buff, offset, enumItemsByEnum[value] or 0)
|
|
1421
|
+
return 2
|
|
1422
|
+
end
|
|
1423
|
+
|
|
1424
|
+
@native local function decodeEnumItem(buff: buffer, offset: number, arg: SchemaArg): (EnumItem?, number)
|
|
1425
|
+
local idx = readu16(buff, offset)
|
|
1426
|
+
return enumItems[idx], 2
|
|
1427
|
+
end
|
|
1428
|
+
|
|
1429
|
+
@native local function encodeInstance(buff: buffer, offset: number, arg: SchemaArg, value: Instance, inst: {Instance})
|
|
1430
|
+
: number
|
|
1431
|
+
inst[#inst + 1] = value
|
|
1432
|
+
return 0
|
|
1433
|
+
end
|
|
1434
|
+
|
|
1435
|
+
@native local function decodeInstance(buff: buffer, offset: number, arg: SchemaArg, inst: {Instance})
|
|
1436
|
+
: (Instance, number)
|
|
1437
|
+
local ptrIdx = #inst
|
|
1438
|
+
local ptr = inst[ptrIdx]
|
|
1439
|
+
inst[ptrIdx] += 1
|
|
1440
|
+
return inst[ptr], 0
|
|
1441
|
+
end
|
|
1442
|
+
|
|
1443
|
+
@native local function encodePlayer(buff: buffer, offset: number, arg: SchemaArg, value: Player): number
|
|
1444
|
+
writef64(buff, offset, value.UserId or 0)
|
|
1445
|
+
return 8
|
|
1446
|
+
end
|
|
1447
|
+
|
|
1448
|
+
@native local function decodePlayer(buff: buffer, offset: number, arg: SchemaArg): (Player?, number)
|
|
1449
|
+
local player = Players:GetPlayerByUserId(readf64(buff, offset))
|
|
1450
|
+
return player, 8
|
|
1451
|
+
end
|
|
1452
|
+
|
|
1453
|
+
@native local function encodeAny(buff: buffer, offset: number, arg: SchemaArg, value: any, inst: {Instance}): number
|
|
1454
|
+
local dataType = getDataType(value)
|
|
1455
|
+
writeu8(buff, offset, dataType)
|
|
1456
|
+
local bytes = 1
|
|
1457
|
+
local encode = encodeData[dataType] :: ((buffer, number, SchemaArg, any, {Instance}?) -> number)?
|
|
1458
|
+
bytes += encode(buff, offset + bytes, arg, value, inst)
|
|
1459
|
+
return bytes
|
|
1460
|
+
end
|
|
1461
|
+
|
|
1462
|
+
@native local function decodeAny(buff: buffer, offset: number, arg: SchemaArg, inst: {Instance}?): (any, number)
|
|
1463
|
+
local dataType = readu8(buff, offset)
|
|
1464
|
+
local bytes = 1
|
|
1465
|
+
local decode = decodeData[dataType] :: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
|
|
1466
|
+
if not decode then
|
|
1467
|
+
return nil, 1
|
|
1468
|
+
end
|
|
1469
|
+
local val, b = decode(buff, offset + bytes, arg, inst)
|
|
1470
|
+
return val, bytes + b
|
|
1471
|
+
end
|
|
1472
|
+
|
|
1473
|
+
@native local function encodeOptional(buff: buffer, offset: number, arg: SchemaArg, value: any, inst: {Instance}?)
|
|
1474
|
+
: number
|
|
1475
|
+
local isNil = value == nil
|
|
1476
|
+
local tag = isNil and 0 or 1
|
|
1477
|
+
writeu8(buff, offset, tag)
|
|
1478
|
+
if isNil then
|
|
1479
|
+
return 1
|
|
1480
|
+
end
|
|
1481
|
+
|
|
1482
|
+
local valArg = arg[2]
|
|
1483
|
+
local encode = encodeData[valArg] or encodeData[valArg[1]] :: (buffer, number, SchemaArg, any, {Instance}?) -> number
|
|
1484
|
+
local bytes = encode(buff, offset + 1, valArg, value, inst)
|
|
1485
|
+
return bytes + 1
|
|
1486
|
+
end
|
|
1487
|
+
|
|
1488
|
+
@native local function decodeOptional(buff: buffer, offset: number, arg: SchemaArg, inst: {Instance}?)
|
|
1489
|
+
: (any, number)
|
|
1490
|
+
local isNil = readu8(buff, offset) == 0
|
|
1491
|
+
if isNil then return nil, 1 end
|
|
1492
|
+
|
|
1493
|
+
local valArg = arg[2]
|
|
1494
|
+
local decode = decodeData[valArg] or decodeData[valArg[1]] :: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
|
|
1495
|
+
local val, b = decode(buff, offset + 1, valArg, inst)
|
|
1496
|
+
return val, b + 1
|
|
1497
|
+
end
|
|
1498
|
+
|
|
1499
|
+
@native local function encodeUnion(buff: buffer, offset: number, arg: SchemaArg, value: any, inst: {Instance}?)
|
|
1500
|
+
: number
|
|
1501
|
+
local dt = typeof(value)
|
|
1502
|
+
local valArg = arg[dt]
|
|
1503
|
+
local tag = dt ~= "table" and valArg or valArg[1]
|
|
1504
|
+
writeu8(buff, offset, tag)
|
|
1505
|
+
|
|
1506
|
+
local encode = encodeData[tag] :: (buffer, number, SchemaArg, any, {Instance}?) -> number
|
|
1507
|
+
local bytes = encode(buff, offset + 1, valArg, value, inst)
|
|
1508
|
+
return bytes + 1
|
|
1509
|
+
end
|
|
1510
|
+
|
|
1511
|
+
@native local function decodeUnion(buff: buffer, offset: number, arg: SchemaArg, inst: {Instance}?): (any, number)
|
|
1512
|
+
local tag = readu8(buff, offset)
|
|
1513
|
+
local valArg = arg[tag]
|
|
1514
|
+
local decode = decodeData[tag] :: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
|
|
1515
|
+
local val, b = decode(buff, offset + 1, valArg, inst)
|
|
1516
|
+
return val, b + 1
|
|
1517
|
+
end
|
|
1518
|
+
|
|
1519
|
+
@native local function encodeLiteral(buff: buffer, offset: number, arg: SchemaArg, value: Literal)
|
|
1520
|
+
:number
|
|
1521
|
+
local reverseMap = arg[3]
|
|
1522
|
+
writeu8(buff, offset, reverseMap[value])
|
|
1523
|
+
return 1
|
|
1524
|
+
end
|
|
1525
|
+
|
|
1526
|
+
@native local function decodeLiteral(buff: buffer, offset: number, arg: SchemaArg): (Literal, number)
|
|
1527
|
+
local map = arg[2]
|
|
1528
|
+
return map[readu8(buff, offset)], 1
|
|
1529
|
+
end
|
|
1530
|
+
|
|
1531
|
+
@native local function encodeArrayStatic(buff: buffer, offset: number, schema: SchemaArg, array: {any}, inst: {Instance})
|
|
1532
|
+
: number
|
|
1533
|
+
local ptr = offset
|
|
1534
|
+
local fastPath = schema[3]
|
|
1535
|
+
|
|
1536
|
+
if fastPath then
|
|
1537
|
+
ptr += encodeData[fastPath](buff, ptr, array)
|
|
1538
|
+
return ptr - offset
|
|
1539
|
+
end
|
|
1540
|
+
|
|
1541
|
+
for idx, arg: SchemaArg in schema[2] do
|
|
1542
|
+
local encode = encodeData[arg] or encodeData[arg[1]]
|
|
1543
|
+
:: (buffer, number, SchemaArg, any, {Instance}?) -> number
|
|
1544
|
+
ptr += encode(buff, ptr, arg, array[idx], inst)
|
|
1545
|
+
end
|
|
1546
|
+
return ptr - offset
|
|
1547
|
+
end
|
|
1548
|
+
|
|
1549
|
+
@native local function decodeArrayStatic(buff: buffer, offset: number, schema: {SchemaArg}, inst: {Instance}?)
|
|
1550
|
+
: ({any}, number)
|
|
1551
|
+
local ptr = offset
|
|
1552
|
+
local data = schema[2]
|
|
1553
|
+
local fastPath = schema[3]
|
|
1554
|
+
|
|
1555
|
+
if fastPath then
|
|
1556
|
+
local array, b = decodeData[fastPath](buff, ptr, #data)
|
|
1557
|
+
return array, ptr + b - offset
|
|
1558
|
+
end
|
|
1559
|
+
|
|
1560
|
+
local array = {}
|
|
1561
|
+
for i, arg: SchemaArg in data do
|
|
1562
|
+
local decode = decodeData[arg] or decodeData[arg[1]]
|
|
1563
|
+
:: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
|
|
1564
|
+
local val, b = decode(buff, ptr, arg, inst)
|
|
1565
|
+
ptr += b
|
|
1566
|
+
array[i] = val
|
|
1567
|
+
end
|
|
1568
|
+
return array, ptr - offset
|
|
1569
|
+
end
|
|
1570
|
+
|
|
1571
|
+
@native local function encodeArray(buff: buffer, offset: number, schema: SchemaArg, array: {any}, inst: {Instance})
|
|
1572
|
+
: number
|
|
1573
|
+
local len = #array
|
|
1574
|
+
writeu16(buff, offset, len)
|
|
1575
|
+
local ptr = offset + 2
|
|
1576
|
+
|
|
1577
|
+
local fastPath = schema[3]
|
|
1578
|
+
if fastPath then
|
|
1579
|
+
ptr += encodeData[fastPath](buff, ptr, array)
|
|
1580
|
+
return ptr - offset
|
|
1581
|
+
end
|
|
1582
|
+
|
|
1583
|
+
local arg = schema[2]
|
|
1584
|
+
local encode = encodeData[arg] or encodeData[arg[1]] :: (buffer, number, SchemaArg, any, {Instance}?) -> number
|
|
1585
|
+
for i, value in array do
|
|
1586
|
+
ptr += encode(buff, ptr, arg, value, inst)
|
|
1587
|
+
end
|
|
1588
|
+
return ptr - offset
|
|
1589
|
+
end
|
|
1590
|
+
|
|
1591
|
+
@native local function decodeArray(buff: buffer, offset: number, schema: SchemaArg, inst: {Instance}?): ({any}, number)
|
|
1592
|
+
local len = readu16(buff, offset)
|
|
1593
|
+
local ptr = offset + 2
|
|
1594
|
+
|
|
1595
|
+
local fastPath = schema[3]
|
|
1596
|
+
if fastPath then
|
|
1597
|
+
local array, b = decodeData[fastPath](buff, ptr, len)
|
|
1598
|
+
return array, ptr + b - offset
|
|
1599
|
+
end
|
|
1600
|
+
|
|
1601
|
+
local arg = schema[2]
|
|
1602
|
+
local decode = decodeData[arg] or decodeData[arg[1]]
|
|
1603
|
+
:: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
|
|
1604
|
+
local array = table.create(len)
|
|
1605
|
+
|
|
1606
|
+
for i = 1, len do
|
|
1607
|
+
local val, b = decode(buff, ptr, arg, inst)
|
|
1608
|
+
ptr += b
|
|
1609
|
+
array[i] = val
|
|
1610
|
+
end
|
|
1611
|
+
return array, ptr - offset
|
|
1612
|
+
end
|
|
1613
|
+
|
|
1614
|
+
@native local function encodeArrayDynamic(buff: buffer, offset: number, schema: SchemaArg, array: {any}, inst: {Instance})
|
|
1615
|
+
: number
|
|
1616
|
+
local len = #array
|
|
1617
|
+
writeu16(buff, offset, len)
|
|
1618
|
+
local ptr = offset + 2
|
|
1619
|
+
|
|
1620
|
+
for i = 1, len do
|
|
1621
|
+
local val = array[i]
|
|
1622
|
+
local dataType = getDataType(val)
|
|
1623
|
+
writeu8(buff, ptr, dataType)
|
|
1624
|
+
ptr += 1
|
|
1625
|
+
local encode = encodeData[dataType] :: (buffer, number, SchemaArg, any, {Instance}?) -> number
|
|
1626
|
+
ptr += encode(buff, ptr, schema, val, inst)
|
|
1627
|
+
end
|
|
1628
|
+
return ptr - offset
|
|
1629
|
+
end
|
|
1630
|
+
|
|
1631
|
+
@native local function decodeArrayDynamic(buff: buffer, offset: number, schema: SchemaArg, inst: {Instance}?)
|
|
1632
|
+
: ({any}, number)
|
|
1633
|
+
local len = readu16(buff, offset)
|
|
1634
|
+
local ptr = offset + 2
|
|
1635
|
+
local array = table.create(len)
|
|
1636
|
+
|
|
1637
|
+
for i = 1, len do
|
|
1638
|
+
local dataType = readu8(buff, ptr)
|
|
1639
|
+
ptr += 1
|
|
1640
|
+
local decode = decodeData[dataType] or decodeData[Enums.Nil]
|
|
1641
|
+
:: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
|
|
1642
|
+
local val, b = decode(buff, ptr, schema, inst)
|
|
1643
|
+
ptr += b
|
|
1644
|
+
array[i] = val
|
|
1645
|
+
end
|
|
1646
|
+
return array, ptr - offset
|
|
1647
|
+
end
|
|
1648
|
+
|
|
1649
|
+
@native local function encodeDictStatic(buff: buffer, offset: number, schema: SchemaArg, dict: {[string | number]: any},
|
|
1650
|
+
inst: {Instance}): number
|
|
1651
|
+
local ptr = offset
|
|
1652
|
+
local data = schema[2]
|
|
1653
|
+
local keysMap = schema[3]
|
|
1654
|
+
local fastPath = schema[5]
|
|
1655
|
+
|
|
1656
|
+
if fastPath then
|
|
1657
|
+
ptr += encodeData[fastPath](buff, ptr, dict, keysMap)
|
|
1658
|
+
return ptr - offset
|
|
1659
|
+
end
|
|
1660
|
+
|
|
1661
|
+
local idx = 0
|
|
1662
|
+
for i, key in keysMap do
|
|
1663
|
+
idx += 1
|
|
1664
|
+
local arg = data[idx]
|
|
1665
|
+
local val = dict[key]
|
|
1666
|
+
local encode = encodeData[arg] or encodeData[arg[1]] ::
|
|
1667
|
+
(buffer, number, SchemaArg, any, {Instance}?) -> number
|
|
1668
|
+
ptr += encode(buff, ptr, arg, val, inst)
|
|
1669
|
+
end
|
|
1670
|
+
return ptr - offset
|
|
1671
|
+
end
|
|
1672
|
+
|
|
1673
|
+
@native local function decodeDictStatic(buff: buffer, offset: number, schema: SchemaArg, inst: {Instance}?)
|
|
1674
|
+
: ({[number | string]: any}, number)
|
|
1675
|
+
local ptr = offset
|
|
1676
|
+
local data = schema[2]
|
|
1677
|
+
local keysMap = schema[3]
|
|
1678
|
+
local template = schema[4]
|
|
1679
|
+
local fastPath = schema[5]
|
|
1680
|
+
|
|
1681
|
+
if fastPath then
|
|
1682
|
+
local values, b = decodeData[fastPath](buff, ptr, keysMap, template)
|
|
1683
|
+
ptr += b
|
|
1684
|
+
return values, ptr - offset
|
|
1685
|
+
end
|
|
1686
|
+
|
|
1687
|
+
local dict = table.clone(template)
|
|
1688
|
+
for i, arg in data do
|
|
1689
|
+
local decode = decodeData[arg] or decodeData[arg[1]]
|
|
1690
|
+
:: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
|
|
1691
|
+
local val, b = decode(buff, ptr, arg, inst)
|
|
1692
|
+
ptr += b
|
|
1693
|
+
local key = keysMap[i]
|
|
1694
|
+
dict[key] = val
|
|
1695
|
+
end
|
|
1696
|
+
return dict, ptr - offset
|
|
1697
|
+
end
|
|
1698
|
+
|
|
1699
|
+
@native local function encodeDict(buff: buffer, offset: number, schema: SchemaArg, dict: {[any]: any}, inst: {Instance})
|
|
1700
|
+
: number
|
|
1701
|
+
local len = 0
|
|
1702
|
+
local ptr = offset + 2
|
|
1703
|
+
local keyFastPath = schema[4]
|
|
1704
|
+
local valFastPath = schema[5]
|
|
1705
|
+
|
|
1706
|
+
if keyFastPath then
|
|
1707
|
+
local bytes
|
|
1708
|
+
bytes, len = encodeData[keyFastPath](buff, ptr, dict, true)
|
|
1709
|
+
ptr += bytes
|
|
1710
|
+
else
|
|
1711
|
+
local keyArg = schema[2]
|
|
1712
|
+
local encodeKey = encodeData[keyArg] or encodeData[keyArg[1]]
|
|
1713
|
+
:: (buffer, number, SchemaArg, any, {Instance}?) -> number
|
|
1714
|
+
for key, val in dict do
|
|
1715
|
+
ptr += encodeKey(buff, ptr, keyArg, key, inst)
|
|
1716
|
+
len += 1
|
|
1717
|
+
end
|
|
1718
|
+
end
|
|
1719
|
+
|
|
1720
|
+
if valFastPath then
|
|
1721
|
+
ptr += encodeData[valFastPath](buff, ptr, dict)
|
|
1722
|
+
else
|
|
1723
|
+
local valArg = schema[3]
|
|
1724
|
+
local encodeVal = encodeData[valArg] or encodeData[valArg[1]]
|
|
1725
|
+
:: (buffer, number, SchemaArg, any, {Instance}?) -> number
|
|
1726
|
+
for key, val in dict do
|
|
1727
|
+
ptr += encodeVal(buff, ptr, valArg, val, inst)
|
|
1728
|
+
end
|
|
1729
|
+
end
|
|
1730
|
+
|
|
1731
|
+
writeu16(buff, offset, len)
|
|
1732
|
+
return ptr - offset
|
|
1733
|
+
end
|
|
1734
|
+
|
|
1735
|
+
local dictTempCache: {[number]: {[any]: any}} = {}
|
|
1736
|
+
|
|
1737
|
+
@native local function decodeDict(buff: buffer, offset: number, schema: SchemaArg, inst: {Instance}?): ({[any]: any}, number)
|
|
1738
|
+
local len = readu16(buff, offset)
|
|
1739
|
+
local ptr = offset + 2
|
|
1740
|
+
local keyFastPath = schema[4]
|
|
1741
|
+
local valFastPath = schema[5]
|
|
1742
|
+
local keys, vals = getTable(), getTable()
|
|
1743
|
+
|
|
1744
|
+
if keyFastPath then
|
|
1745
|
+
local bytes
|
|
1746
|
+
keys, bytes = decodeData[keyFastPath](buff, ptr, len, keys)
|
|
1747
|
+
ptr += bytes
|
|
1748
|
+
else
|
|
1749
|
+
local keyArg = schema[2]
|
|
1750
|
+
local decodeKey = decodeData[keyArg] or decodeData[keyArg[1]]
|
|
1751
|
+
:: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
|
|
1752
|
+
for i = 1, len do
|
|
1753
|
+
local key, b = decodeKey(buff, ptr, keyArg, inst)
|
|
1754
|
+
ptr += b
|
|
1755
|
+
keys[i] = key
|
|
1756
|
+
end
|
|
1757
|
+
end
|
|
1758
|
+
|
|
1759
|
+
if valFastPath then
|
|
1760
|
+
local bytes
|
|
1761
|
+
vals, bytes = decodeData[valFastPath](buff, ptr, len, vals)
|
|
1762
|
+
ptr += bytes
|
|
1763
|
+
else
|
|
1764
|
+
local valArg = schema[3]
|
|
1765
|
+
local decodeVal = decodeData[valArg] or decodeData[valArg[1]]
|
|
1766
|
+
:: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
|
|
1767
|
+
for i = 1, len do
|
|
1768
|
+
local val, b = decodeVal(buff, ptr, valArg, inst)
|
|
1769
|
+
ptr += b
|
|
1770
|
+
vals[i] = val
|
|
1771
|
+
end
|
|
1772
|
+
end
|
|
1773
|
+
|
|
1774
|
+
local dictId = schema[6]
|
|
1775
|
+
local template = dictTempCache[dictId]
|
|
1776
|
+
local dict
|
|
1777
|
+
if template then
|
|
1778
|
+
table.clear(template)
|
|
1779
|
+
dict = table.clone(template)
|
|
1780
|
+
else
|
|
1781
|
+
dict = {}
|
|
1782
|
+
end
|
|
1783
|
+
|
|
1784
|
+
for i, key in keys do
|
|
1785
|
+
dict[key] = vals[i]
|
|
1786
|
+
end
|
|
1787
|
+
recycleTable(keys)
|
|
1788
|
+
recycleTable(vals)
|
|
1789
|
+
if not template then
|
|
1790
|
+
dictTempCache[dictId] = table.clone(dict)
|
|
1791
|
+
end
|
|
1792
|
+
return dict, ptr - offset
|
|
1793
|
+
end
|
|
1794
|
+
|
|
1795
|
+
@native local function encodeDictDynamic(buff: buffer, offset: number, schema: SchemaArg, dict: {[any]: any},
|
|
1796
|
+
inst: {Instance}): number
|
|
1797
|
+
local startOffset = offset
|
|
1798
|
+
local ptr = offset + 2
|
|
1799
|
+
local idx = 0
|
|
1800
|
+
|
|
1801
|
+
for key, val in dict do
|
|
1802
|
+
local keyType = getDataType(key)
|
|
1803
|
+
local encodeKey = encodeData[keyType] :: (buffer, number, SchemaArg, any, {Instance}?) -> number
|
|
1804
|
+
writeu8(buff, ptr, keyType)
|
|
1805
|
+
ptr += 1
|
|
1806
|
+
ptr += encodeKey(buff, ptr, schema, key, inst)
|
|
1807
|
+
|
|
1808
|
+
local valType = getDataType(val)
|
|
1809
|
+
local encodeVal = encodeData[valType] :: (buffer, number, SchemaArg, any, {Instance}?) -> number
|
|
1810
|
+
writeu8(buff, ptr, valType)
|
|
1811
|
+
ptr += 1
|
|
1812
|
+
ptr += encodeVal(buff, ptr, schema, val, inst)
|
|
1813
|
+
idx += 1
|
|
1814
|
+
end
|
|
1815
|
+
writeu16(buff, offset, idx)
|
|
1816
|
+
return ptr - offset
|
|
1817
|
+
end
|
|
1818
|
+
|
|
1819
|
+
@native local function decodeDictDynamic(buff: buffer, offset: number, schema: SchemaArg, inst: {Instance}?)
|
|
1820
|
+
: ({[any]: any}, number)
|
|
1821
|
+
local len = readu16(buff, offset)
|
|
1822
|
+
local ptr = offset + 2
|
|
1823
|
+
local dict = {}
|
|
1824
|
+
|
|
1825
|
+
for i = 1, len do
|
|
1826
|
+
local keyType = readu8(buff, ptr)
|
|
1827
|
+
ptr += 1
|
|
1828
|
+
local decodeKey = decodeData[keyType] or decodeData[Enums.Nil]
|
|
1829
|
+
:: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
|
|
1830
|
+
local key, b = decodeKey(buff, ptr, schema, inst)
|
|
1831
|
+
ptr += b
|
|
1832
|
+
|
|
1833
|
+
local valType = readu8(buff, ptr)
|
|
1834
|
+
ptr += 1
|
|
1835
|
+
local decodeVal = decodeData[valType] or decodeData[Enums.Nil]
|
|
1836
|
+
:: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
|
|
1837
|
+
local val, b = decodeVal(buff, ptr, schema, inst)
|
|
1838
|
+
ptr += b
|
|
1839
|
+
dict[key] = val
|
|
1840
|
+
end
|
|
1841
|
+
return dict, ptr - offset
|
|
1842
|
+
end
|
|
1843
|
+
|
|
1844
|
+
encodeData = {
|
|
1845
|
+
[Enums.Start] = function() end,
|
|
1846
|
+
[Enums.NumberU4] = encodeNumberU8,
|
|
1847
|
+
[Enums.NumberU8] = encodeNumberU8,
|
|
1848
|
+
[Enums.NumberU16] = encodeNumberU16,
|
|
1849
|
+
[Enums.NumberU32] = encodeNumberU32,
|
|
1850
|
+
[Enums.NumberI8] = encodeNumberI8,
|
|
1851
|
+
[Enums.NumberI16] = encodeNumberI16,
|
|
1852
|
+
[Enums.NumberI32] = encodeNumberI32,
|
|
1853
|
+
[Enums.NumberF16] = encodeNumberF16,
|
|
1854
|
+
[Enums.NumberF32] = encodeNumberF32,
|
|
1855
|
+
[Enums.NumberF64] = encodeNumberF64,
|
|
1856
|
+
|
|
1857
|
+
[Enums.CFrameFX8] = encodeCFrameFX8,
|
|
1858
|
+
[Enums.CFrameI16FX16] = encodeCFrameI16FX16,
|
|
1859
|
+
[Enums.CFrameFX16] = encodeCFrameFX16,
|
|
1860
|
+
[Enums.CFrameF16] = encodeCFrameF16,
|
|
1861
|
+
[Enums.CFrameF32Aligned] = encodeCFrameF32Aligned,
|
|
1862
|
+
[Enums.CFrameF32FX16] = encodeCFrameF32FX16,
|
|
1863
|
+
[Enums.CFrameF32] = encodeCFrameF32,
|
|
1864
|
+
|
|
1865
|
+
[Enums.Vector3FX8] = encodeVector3FX8,
|
|
1866
|
+
[Enums.Vector3I16] = encodeVector3I16,
|
|
1867
|
+
[Enums.Vector3FX16] = encodeVector3FX16,
|
|
1868
|
+
[Enums.Vector3F16] = encodeVector3F16,
|
|
1869
|
+
[Enums.Vector3F32] = encodeVector3F32,
|
|
1870
|
+
|
|
1871
|
+
[Enums.Vector2FX8] = encodeVector2FX8,
|
|
1872
|
+
[Enums.Vector2I16] = encodeVector2I16,
|
|
1873
|
+
[Enums.Vector2FX16] = encodeVector2FX16,
|
|
1874
|
+
[Enums.Vector2F16] = encodeVector2F16,
|
|
1875
|
+
[Enums.Vector2F32] = encodeVector2F32,
|
|
1876
|
+
|
|
1877
|
+
[Enums.String] = encodeString,
|
|
1878
|
+
[Enums.StringLong] = encodeStringLong,
|
|
1879
|
+
[Enums.Color3] = encodeColor,
|
|
1880
|
+
[Enums.BrickColor] = encodeBrickColor,
|
|
1881
|
+
[Enums.Boolean] = encodeBool,
|
|
1882
|
+
[Enums.Nil] = encodeNil,
|
|
1883
|
+
[Enums.Buffer] = encodeBuffer,
|
|
1884
|
+
[Enums.EnumItem] = encodeEnumItem,
|
|
1885
|
+
[Enums.Instance] = encodeInstance,
|
|
1886
|
+
[Enums.Player] = encodePlayer,
|
|
1887
|
+
[Enums.DateTime32] = encodeDateTime32,
|
|
1888
|
+
[Enums.DateTime64] = encodeDateTime64,
|
|
1889
|
+
[Enums.TweenInfo] = encodeTweenInfo,
|
|
1890
|
+
[Enums.ColorSequence] = encodeColorSequence,
|
|
1891
|
+
[Enums.NumberSequence] = encodeNumberSequence,
|
|
1892
|
+
[Enums.NumberRange] = encodeNumberRange,
|
|
1893
|
+
[Enums.UDim] = encodeUDim,
|
|
1894
|
+
[Enums.UDim2] = encodeUDim2,
|
|
1895
|
+
[Enums.Region3] = encodeRegion3,
|
|
1896
|
+
[Enums.PhysicalProperties] = encodePhysicalProperties,
|
|
1897
|
+
[Enums.Rect] = encodeRect,
|
|
1898
|
+
|
|
1899
|
+
[Enums.Any] = encodeAny,
|
|
1900
|
+
[Enums.Optional] = encodeOptional,
|
|
1901
|
+
[Enums.Union] = encodeUnion,
|
|
1902
|
+
[Enums.Literal] = encodeLiteral,
|
|
1903
|
+
[Enums.ArrayStatic] = encodeArrayStatic,
|
|
1904
|
+
[Enums.Array] = encodeArray,
|
|
1905
|
+
[Enums.ArrayDynamic] = encodeArrayDynamic,
|
|
1906
|
+
[Enums.DictStatic] = encodeDictStatic,
|
|
1907
|
+
[Enums.Dict] = encodeDict,
|
|
1908
|
+
[Enums.DictDynamic] = encodeDictDynamic,
|
|
1909
|
+
|
|
1910
|
+
[Enums.FastNumberU4Array] = encodeBulkNumberU4Array,
|
|
1911
|
+
[Enums.FastNumberU8Array] = encodeBulkNumberU8Array,
|
|
1912
|
+
[Enums.FastNumberI32Array] = encodeBulkNumberI32Array,
|
|
1913
|
+
[Enums.FastNumberF32Array] = encodeBulkNumberF32Array,
|
|
1914
|
+
[Enums.FastBoolArray] = encodeBulkBoolArray,
|
|
1915
|
+
[Enums.FastStringArray] = encodeBulkStringArray,
|
|
1916
|
+
[Enums.FastNumberU8DictStatic] = encodeBulkNumberU8DictStatic,
|
|
1917
|
+
[Enums.FastNumberI32DictStatic] = encodeBulkNumberI32DictStatic,
|
|
1918
|
+
[Enums.FastNumberF32DictStatic] = encodeBulkNumberF32DictStatic,
|
|
1919
|
+
[Enums.FastBoolDictStatic] = encodeBulkBoolDictStatic,
|
|
1920
|
+
[Enums.FastStringDictStatic]= encodeBulkStringDictStatic,
|
|
1921
|
+
[Enums.FastNumberU8Dict] = encodeBulkNumberU8Dict,
|
|
1922
|
+
[Enums.FastNumberI32Dict] = encodeBulkNumberI32Dict,
|
|
1923
|
+
[Enums.FastNumberF32Dict] = encodeBulkNumberF32Dict,
|
|
1924
|
+
[Enums.FastBoolDict] = encodeBulkBoolDict,
|
|
1925
|
+
[Enums.FastStringDict] = encodeBulkStringDict,
|
|
1926
|
+
}
|
|
1927
|
+
|
|
1928
|
+
decodeData = {
|
|
1929
|
+
[Enums.Start] = function() end,
|
|
1930
|
+
[Enums.NumberU4] = decodeNumberU8,
|
|
1931
|
+
[Enums.NumberU8] = decodeNumberU8,
|
|
1932
|
+
[Enums.NumberU16] = decodeNumberU16,
|
|
1933
|
+
[Enums.NumberU32] = decodeNumberU32,
|
|
1934
|
+
[Enums.NumberI8] = decodeNumberI8,
|
|
1935
|
+
[Enums.NumberI16] = decodeNumberI16,
|
|
1936
|
+
[Enums.NumberI32] = decodeNumberI32,
|
|
1937
|
+
[Enums.NumberF16] = decodeNumberF16,
|
|
1938
|
+
[Enums.NumberF32] = decodeNumberF32,
|
|
1939
|
+
[Enums.NumberF64] = decodeNumberF64,
|
|
1940
|
+
|
|
1941
|
+
[Enums.CFrameFX8] = decodeCFrameFX8,
|
|
1942
|
+
[Enums.CFrameI16FX16] = decodeCFrameI16FX16,
|
|
1943
|
+
[Enums.CFrameFX16] = decodeCFrameFX16,
|
|
1944
|
+
[Enums.CFrameF16] = decodeCFrameF16,
|
|
1945
|
+
[Enums.CFrameF32Aligned] = decodeCFrameF32Aligned,
|
|
1946
|
+
[Enums.CFrameF32FX16] = decodeCFrameF32FX16,
|
|
1947
|
+
[Enums.CFrameF32] = decodeCFrameF32,
|
|
1948
|
+
|
|
1949
|
+
[Enums.Vector3FX8] = decodeVector3FX8,
|
|
1950
|
+
[Enums.Vector3I16] = decodeVector3I16,
|
|
1951
|
+
[Enums.Vector3FX16] = decodeVector3FX16,
|
|
1952
|
+
[Enums.Vector3F16] = decodeVector3F16,
|
|
1953
|
+
[Enums.Vector3F32] = decodeVector3F32,
|
|
1954
|
+
|
|
1955
|
+
[Enums.Vector2FX8] = decodeVector2FX8,
|
|
1956
|
+
[Enums.Vector2I16] = decodeVector2I16,
|
|
1957
|
+
[Enums.Vector2FX16] = decodeVector2FX16,
|
|
1958
|
+
[Enums.Vector2F16] = decodeVector2F16,
|
|
1959
|
+
[Enums.Vector2F32] = decodeVector2F32,
|
|
1960
|
+
|
|
1961
|
+
[Enums.String] = decodeString,
|
|
1962
|
+
[Enums.StringLong] = decodeStringLong,
|
|
1963
|
+
[Enums.Color3] = decodeColor,
|
|
1964
|
+
[Enums.BrickColor] = decodeBrickColor,
|
|
1965
|
+
[Enums.Boolean] = decodeBool,
|
|
1966
|
+
[Enums.Nil] = decodeNil,
|
|
1967
|
+
[Enums.Buffer] = decodeBuffer,
|
|
1968
|
+
[Enums.EnumItem] = decodeEnumItem,
|
|
1969
|
+
[Enums.Instance] = decodeInstance,
|
|
1970
|
+
[Enums.Player] = decodePlayer,
|
|
1971
|
+
[Enums.DateTime32] = decodeDateTime32,
|
|
1972
|
+
[Enums.DateTime64] = decodeDateTime64,
|
|
1973
|
+
[Enums.TweenInfo] = decodeTweenInfo,
|
|
1974
|
+
[Enums.ColorSequence] = decodeColorSequence,
|
|
1975
|
+
[Enums.NumberSequence] = decodeNumberSequence,
|
|
1976
|
+
[Enums.NumberRange] = decodeNumberRange,
|
|
1977
|
+
[Enums.UDim] = decodeUDim,
|
|
1978
|
+
[Enums.UDim2] = decodeUDim2,
|
|
1979
|
+
[Enums.Region3] = decodeRegion3,
|
|
1980
|
+
[Enums.PhysicalProperties] = decodePhysicalProperties,
|
|
1981
|
+
[Enums.Rect] = decodeRect,
|
|
1982
|
+
|
|
1983
|
+
[Enums.Any] = decodeAny,
|
|
1984
|
+
[Enums.Optional] = decodeOptional,
|
|
1985
|
+
[Enums.Union] = decodeUnion,
|
|
1986
|
+
[Enums.Literal] = decodeLiteral,
|
|
1987
|
+
[Enums.ArrayStatic] = decodeArrayStatic,
|
|
1988
|
+
[Enums.Array] = decodeArray,
|
|
1989
|
+
[Enums.ArrayDynamic] = decodeArrayDynamic,
|
|
1990
|
+
[Enums.DictStatic] = decodeDictStatic,
|
|
1991
|
+
[Enums.Dict] = decodeDict,
|
|
1992
|
+
[Enums.DictDynamic] = decodeDictDynamic,
|
|
1993
|
+
|
|
1994
|
+
[Enums.FastNumberU4Array] = decodeBulkNumberU4Array,
|
|
1995
|
+
[Enums.FastNumberU8Array] = decodeBulkNumberU8Array,
|
|
1996
|
+
[Enums.FastNumberI32Array] = decodeBulkNumberI32Array,
|
|
1997
|
+
[Enums.FastNumberF32Array] = decodeBulkNumberF32Array,
|
|
1998
|
+
[Enums.FastBoolArray] = decodeBulkBoolArray,
|
|
1999
|
+
[Enums.FastStringArray] = decodeBulkStringArray,
|
|
2000
|
+
[Enums.FastNumberU8DictStatic] = decodeBulkNumberU8DictStatic,
|
|
2001
|
+
[Enums.FastNumberI32DictStatic] = decodeBulkNumberI32DictStatic,
|
|
2002
|
+
[Enums.FastNumberF32DictStatic] = decodeBulkNumberF32DictStatic,
|
|
2003
|
+
[Enums.FastBoolDictStatic] = decodeBulkBoolDictStatic,
|
|
2004
|
+
[Enums.FastStringDictStatic] = decodeBulkStringDictStatic,
|
|
2005
|
+
[Enums.FastNumberU8Dict] = decodeBulkNumberU8Array,
|
|
2006
|
+
[Enums.FastNumberI32Dict] = decodeBulkNumberI32Array,
|
|
2007
|
+
[Enums.FastNumberF32Dict] = decodeBulkNumberF32Array,
|
|
2008
|
+
[Enums.FastBoolDict] = decodeBulkBoolArray,
|
|
2009
|
+
[Enums.FastStringDict] = decodeBulkStringArray,
|
|
2010
|
+
}
|
|
2011
|
+
|
|
2012
|
+
local Serialize = {
|
|
2013
|
+
encode = encodeData,
|
|
2014
|
+
decode = decodeData,
|
|
2015
|
+
enumItems = enumItems,
|
|
2016
|
+
enumItemsByEnum = enumItemsByEnum,
|
|
2017
|
+
}
|
|
2018
|
+
|
|
2019
|
+
|
|
2020
|
+
return Serialize
|