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,462 @@
|
|
|
1
|
+
-- Just generic utility functions which I use and repeat across all my projects
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
-- LOCAL
|
|
6
|
+
local Utility = {}
|
|
7
|
+
local Players = game:GetService("Players")
|
|
8
|
+
local localPlayer = Players.LocalPlayer
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
-- FUNCTIONS
|
|
13
|
+
function Utility.createStagger(delayTime, callback, delayInitially)
|
|
14
|
+
-- This creates and returns a function which when called
|
|
15
|
+
-- acts identically to callback, however will only be called
|
|
16
|
+
-- for a maximum of once per delayTime. If the returned function
|
|
17
|
+
-- is called more than once during the delayTime, then it will
|
|
18
|
+
-- wait until the expiryTime then perform another recall.
|
|
19
|
+
-- This is useful for visual interfaces and effects which may be
|
|
20
|
+
-- triggered multiple times within a frame or short period, but which
|
|
21
|
+
-- we don't necessary need to (for performance reasons).
|
|
22
|
+
local staggerActive = false
|
|
23
|
+
local multipleCalls = false
|
|
24
|
+
if not delayTime or delayTime == 0 then
|
|
25
|
+
-- We make 0.01 instead of 0 because devices can now run at
|
|
26
|
+
-- different frame rates
|
|
27
|
+
delayTime = 0.01
|
|
28
|
+
end
|
|
29
|
+
local function staggeredCallback(...)
|
|
30
|
+
if staggerActive then
|
|
31
|
+
multipleCalls = true
|
|
32
|
+
return
|
|
33
|
+
end
|
|
34
|
+
local packedArgs = table.pack(...)
|
|
35
|
+
staggerActive = true
|
|
36
|
+
multipleCalls = false
|
|
37
|
+
task.spawn(function()
|
|
38
|
+
if delayInitially then
|
|
39
|
+
task.wait(delayTime)
|
|
40
|
+
end
|
|
41
|
+
callback(table.unpack(packedArgs))
|
|
42
|
+
end)
|
|
43
|
+
task.delay(delayTime, function()
|
|
44
|
+
staggerActive = false
|
|
45
|
+
if multipleCalls then
|
|
46
|
+
-- This means it has been called at least once during
|
|
47
|
+
-- the stagger period, so call again
|
|
48
|
+
staggeredCallback(table.unpack(packedArgs))
|
|
49
|
+
end
|
|
50
|
+
end)
|
|
51
|
+
end
|
|
52
|
+
return staggeredCallback
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
function Utility.round(n)
|
|
56
|
+
-- Credit to Darkmist101 for this
|
|
57
|
+
return math.floor(n + 0.5)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
function Utility.reverseTable(t)
|
|
61
|
+
for i = 1, math.floor(#t/2) do
|
|
62
|
+
local j = #t - i + 1
|
|
63
|
+
t[i], t[j] = t[j], t[i]
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
function Utility.copyTable(t)
|
|
68
|
+
-- Credit to Stephen Leitnick (September 13, 2017) for this function from TableUtil
|
|
69
|
+
assert(type(t) == "table", "First argument must be a table")
|
|
70
|
+
local tCopy = table.create(#t)
|
|
71
|
+
for k,v in pairs(t) do
|
|
72
|
+
if (type(v) == "table") then
|
|
73
|
+
tCopy[k] = Utility.copyTable(v)
|
|
74
|
+
else
|
|
75
|
+
tCopy[k] = v
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
return tCopy
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
local validCharacters = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","1","2","3","4","5","6","7","8","9","0","<",">","?","@","{","}","[","]","!","(",")","=","+","~","#"}
|
|
82
|
+
function Utility.generateUID(length)
|
|
83
|
+
length = length or 8
|
|
84
|
+
local UID = ""
|
|
85
|
+
local list = validCharacters
|
|
86
|
+
local total = #list
|
|
87
|
+
for i = 1, length do
|
|
88
|
+
local randomCharacter = list[math.random(1, total)]
|
|
89
|
+
UID = UID..randomCharacter
|
|
90
|
+
end
|
|
91
|
+
return UID
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
local instanceTrackers = {}
|
|
95
|
+
function Utility.setVisible(instance, bool, sourceUID)
|
|
96
|
+
-- This effectively works like a buff object but
|
|
97
|
+
-- incredibly simplified. It stacks false values
|
|
98
|
+
-- so that if there is more than more than, the
|
|
99
|
+
-- instance remains hidden even if set visible true
|
|
100
|
+
local tracker = instanceTrackers[instance]
|
|
101
|
+
if not tracker then
|
|
102
|
+
tracker = {}
|
|
103
|
+
instanceTrackers[instance] = tracker
|
|
104
|
+
instance.Destroying:Once(function()
|
|
105
|
+
instanceTrackers[instance] = nil
|
|
106
|
+
end)
|
|
107
|
+
end
|
|
108
|
+
if not bool then
|
|
109
|
+
tracker[sourceUID] = true
|
|
110
|
+
else
|
|
111
|
+
tracker[sourceUID] = nil
|
|
112
|
+
end
|
|
113
|
+
local isVisible = bool
|
|
114
|
+
if bool then
|
|
115
|
+
for sourceUID, _ in pairs(tracker) do
|
|
116
|
+
isVisible = false
|
|
117
|
+
break
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
instance.Visible = isVisible
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
function Utility.formatStateName(incomingStateName)
|
|
124
|
+
return string.upper(string.sub(incomingStateName, 1, 1))..string.lower(string.sub(incomingStateName, 2))
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
function Utility.localPlayerRespawned(callback)
|
|
128
|
+
-- The client localscript may be located under a ScreenGui with ResetOnSpawn set to true
|
|
129
|
+
-- In these scenarios, traditional methods like CharacterAdded won't be called by the
|
|
130
|
+
-- time the localscript has been destroyed, therefore we listen for removing instead
|
|
131
|
+
-- If humanoid and health == 0, then reset/died normally, else was
|
|
132
|
+
-- forcefully reset via a method such as LoadCharacter
|
|
133
|
+
-- We wrap this behaviour in case any additional quirks need to be accounted for
|
|
134
|
+
localPlayer.CharacterRemoving:Connect(callback)
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
function Utility.getClippedContainer(screenGui)
|
|
138
|
+
-- We always want clipped items to display in front hence
|
|
139
|
+
-- why we have this
|
|
140
|
+
local clippedContainer = screenGui:FindFirstChild("ClippedContainer")
|
|
141
|
+
if not clippedContainer then
|
|
142
|
+
clippedContainer = Instance.new("Folder")
|
|
143
|
+
clippedContainer.Name = "ClippedContainer"
|
|
144
|
+
clippedContainer.Parent = screenGui
|
|
145
|
+
end
|
|
146
|
+
return clippedContainer
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
local Janitor = require(script.Parent.Packages.Janitor)
|
|
150
|
+
local GuiService = game:GetService("GuiService")
|
|
151
|
+
function Utility.clipOutside(icon, instance)
|
|
152
|
+
local cloneJanitor = icon.janitor:add(Janitor.new())
|
|
153
|
+
instance.Destroying:Once(function()
|
|
154
|
+
cloneJanitor:Destroy()
|
|
155
|
+
end)
|
|
156
|
+
icon.janitor:add(instance)
|
|
157
|
+
|
|
158
|
+
local originalParent = instance.Parent
|
|
159
|
+
local clone = cloneJanitor:add(Instance.new("Frame"))
|
|
160
|
+
clone:SetAttribute("IsAClippedClone", true)
|
|
161
|
+
clone.Name = instance.Name
|
|
162
|
+
clone.AnchorPoint = instance.AnchorPoint
|
|
163
|
+
clone.Size = instance.Size
|
|
164
|
+
clone.Position = instance.Position
|
|
165
|
+
clone.BackgroundTransparency = 1
|
|
166
|
+
clone.LayoutOrder = instance.LayoutOrder
|
|
167
|
+
clone.Parent = originalParent
|
|
168
|
+
|
|
169
|
+
local valueInstance = Instance.new("ObjectValue")
|
|
170
|
+
valueInstance.Name = "OriginalInstance"
|
|
171
|
+
valueInstance.Value = instance
|
|
172
|
+
valueInstance.Parent = clone
|
|
173
|
+
|
|
174
|
+
local valueInstanceCopy = valueInstance:Clone()
|
|
175
|
+
instance:SetAttribute("HasAClippedClone", true)
|
|
176
|
+
valueInstanceCopy.Name = "ClippedClone"
|
|
177
|
+
valueInstanceCopy.Value = clone
|
|
178
|
+
valueInstanceCopy.Parent = instance
|
|
179
|
+
|
|
180
|
+
local screenGui
|
|
181
|
+
local Icon = require(icon.iconModule)
|
|
182
|
+
local container = Icon.container
|
|
183
|
+
local function updateScreenGui()
|
|
184
|
+
local originalScreenGui = originalParent:FindFirstAncestorWhichIsA("ScreenGui")
|
|
185
|
+
screenGui = if string.match(originalScreenGui.Name, "Clipped") then originalScreenGui else container[originalScreenGui.Name.."Clipped"]
|
|
186
|
+
instance.AnchorPoint = Vector2.new(0, 0)
|
|
187
|
+
instance.Parent = Utility.getClippedContainer(screenGui)
|
|
188
|
+
end
|
|
189
|
+
cloneJanitor:add(icon.alignmentChanged:Connect(updateScreenGui))
|
|
190
|
+
updateScreenGui()
|
|
191
|
+
|
|
192
|
+
-- Lets copy over children that modify size
|
|
193
|
+
for _, child in pairs(instance:GetChildren()) do
|
|
194
|
+
if child:IsA("UIAspectRatioConstraint") then
|
|
195
|
+
child:Clone().Parent = clone
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
-- If the icon is hidden, its important we are too (as
|
|
200
|
+
-- setting a parent to visible = false no longer makes
|
|
201
|
+
-- this hidden)
|
|
202
|
+
local widget = icon.widget
|
|
203
|
+
local isOutsideParent = false
|
|
204
|
+
local ignoreVisibilityUpdater = instance:GetAttribute("IgnoreVisibilityUpdater")
|
|
205
|
+
local function updateVisibility()
|
|
206
|
+
if ignoreVisibilityUpdater then
|
|
207
|
+
return
|
|
208
|
+
end
|
|
209
|
+
local isVisible = widget.Visible
|
|
210
|
+
if isOutsideParent then
|
|
211
|
+
isVisible = false
|
|
212
|
+
end
|
|
213
|
+
Utility.setVisible(instance, isVisible, "ClipHandler")
|
|
214
|
+
end
|
|
215
|
+
cloneJanitor:add(widget:GetPropertyChangedSignal("Visible"):Connect(updateVisibility))
|
|
216
|
+
|
|
217
|
+
local previousScroller
|
|
218
|
+
local function checkIfOutsideParentXBounds()
|
|
219
|
+
-- Defer so that roblox's properties reflect their true values
|
|
220
|
+
task.defer(function()
|
|
221
|
+
-- If the instance is within a parent item (such as a dropdown or menu)
|
|
222
|
+
-- then we hide it if it exceeds the bounds of that parent
|
|
223
|
+
local parentInstance
|
|
224
|
+
local ourUID = icon.UID
|
|
225
|
+
local nextIconUID = ourUID
|
|
226
|
+
local shouldClipToParent = instance:GetAttribute("ClipToJoinedParent")
|
|
227
|
+
if shouldClipToParent then
|
|
228
|
+
for i = 1, 10 do -- This is safer than while true do and should never be > 4 parents
|
|
229
|
+
local nextIcon = Icon.getIconByUID(nextIconUID)
|
|
230
|
+
if not nextIcon then
|
|
231
|
+
break
|
|
232
|
+
end
|
|
233
|
+
local nextParentInstance = nextIcon.joinedFrame
|
|
234
|
+
nextIconUID = nextIcon.parentIconUID
|
|
235
|
+
if not nextParentInstance then
|
|
236
|
+
break
|
|
237
|
+
end
|
|
238
|
+
parentInstance = nextParentInstance
|
|
239
|
+
if parentInstance and parentInstance.Name == "DropdownScroller" then
|
|
240
|
+
break
|
|
241
|
+
end
|
|
242
|
+
end
|
|
243
|
+
end
|
|
244
|
+
if not parentInstance then
|
|
245
|
+
isOutsideParent = false
|
|
246
|
+
updateVisibility()
|
|
247
|
+
return
|
|
248
|
+
end
|
|
249
|
+
local pos = instance.AbsolutePosition
|
|
250
|
+
local halfSize = instance.AbsoluteSize/2
|
|
251
|
+
local parentPos = parentInstance.AbsolutePosition
|
|
252
|
+
local parentSize = parentInstance.AbsoluteSize
|
|
253
|
+
local posHalf = (pos + halfSize)
|
|
254
|
+
local exceededLeft = posHalf.X < parentPos.X
|
|
255
|
+
local exceededRight = posHalf.X > (parentPos.X + parentSize.X)
|
|
256
|
+
local exceededTop = posHalf.Y < parentPos.Y
|
|
257
|
+
local exceededBottom = posHalf.Y > (parentPos.Y + parentSize.Y)
|
|
258
|
+
local hasExceeded = exceededLeft or exceededRight or exceededTop or exceededBottom
|
|
259
|
+
if hasExceeded ~= isOutsideParent then
|
|
260
|
+
isOutsideParent = hasExceeded
|
|
261
|
+
updateVisibility()
|
|
262
|
+
end
|
|
263
|
+
if parentInstance:IsA("ScrollingFrame") and previousScroller ~= parentInstance then
|
|
264
|
+
previousScroller = parentInstance
|
|
265
|
+
local connection = parentInstance:GetPropertyChangedSignal("AbsoluteWindowSize"):Connect(function()
|
|
266
|
+
checkIfOutsideParentXBounds()
|
|
267
|
+
end)
|
|
268
|
+
cloneJanitor:add(connection, "Disconnect", "TrackUtilityScroller-"..ourUID)
|
|
269
|
+
end
|
|
270
|
+
end)
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
local camera = workspace.CurrentCamera
|
|
274
|
+
local additionalOffsetX = instance:GetAttribute("AdditionalOffsetX") or 0
|
|
275
|
+
local function trackProperty(property)
|
|
276
|
+
local absoluteProperty = "Absolute"..property
|
|
277
|
+
local function updateProperty()
|
|
278
|
+
local cloneValue = clone[absoluteProperty]
|
|
279
|
+
local absoluteValue = UDim2.fromOffset(cloneValue.X, cloneValue.Y)
|
|
280
|
+
if property == "Position" then
|
|
281
|
+
|
|
282
|
+
-- This binds the instances within the bounds of the screen
|
|
283
|
+
local SIDE_PADDING = 4
|
|
284
|
+
local limitX = camera.ViewportSize.X - instance.AbsoluteSize.X - SIDE_PADDING
|
|
285
|
+
local inputX = absoluteValue.X.Offset
|
|
286
|
+
if inputX < SIDE_PADDING then
|
|
287
|
+
inputX = SIDE_PADDING
|
|
288
|
+
elseif inputX > limitX then
|
|
289
|
+
inputX = limitX
|
|
290
|
+
end
|
|
291
|
+
absoluteValue = UDim2.fromOffset(inputX, absoluteValue.Y.Offset)
|
|
292
|
+
|
|
293
|
+
-- AbsolutePosition does not perfectly match with TopbarInsets enabled
|
|
294
|
+
-- This corrects this
|
|
295
|
+
local topbarInset = GuiService.TopbarInset
|
|
296
|
+
local viewportWidth = workspace.CurrentCamera.ViewportSize.X
|
|
297
|
+
local guiWidth = screenGui.AbsoluteSize.X
|
|
298
|
+
local guiOffset = screenGui.AbsolutePosition.X
|
|
299
|
+
--local widthDifference = guiOffset - topbarInset.Min.X
|
|
300
|
+
local oldTopbarCenterOffset = 0--widthDifference/30
|
|
301
|
+
local offsetX = if Icon.isOldTopbar then guiOffset else viewportWidth - guiWidth - oldTopbarCenterOffset
|
|
302
|
+
|
|
303
|
+
-- Also add additionalOffset
|
|
304
|
+
offsetX -= additionalOffsetX
|
|
305
|
+
absoluteValue += UDim2.fromOffset(-offsetX, topbarInset.Height)
|
|
306
|
+
|
|
307
|
+
-- Finally check if within its direct parents bounds
|
|
308
|
+
checkIfOutsideParentXBounds()
|
|
309
|
+
|
|
310
|
+
end
|
|
311
|
+
instance[property] = absoluteValue
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
-- This defer is essential as the listener may be in a different screenGui to the actor
|
|
315
|
+
local updatePropertyStaggered = Utility.createStagger(0.01, updateProperty)
|
|
316
|
+
cloneJanitor:add(clone:GetPropertyChangedSignal(absoluteProperty):Connect(updatePropertyStaggered))
|
|
317
|
+
cloneJanitor:add(clone:GetAttributeChangedSignal("ForceUpdate"):Connect(function()
|
|
318
|
+
updatePropertyStaggered()
|
|
319
|
+
end))
|
|
320
|
+
|
|
321
|
+
-- This is to patch a weirddddd bug with ScreenGuis with SreenInsets set to
|
|
322
|
+
-- 'TopbarSafeInsets'. For some reason the absolute position of gui instances
|
|
323
|
+
-- within this type of screenGui DO NOT accurately update to match their new
|
|
324
|
+
-- real world position; instead they jump around almost randomly for a few frames.
|
|
325
|
+
-- I have spent way too many hours trying to solve this bug, I think the only way
|
|
326
|
+
-- for the time being is to not use ScreenGuis with TopbarSafeInsets, but I don't
|
|
327
|
+
-- have time to redesign the entire system around that at the moment.
|
|
328
|
+
-- Here's a GIF of this bug: https://i.imgur.com/VitHdC1.gif
|
|
329
|
+
local updatePropertyPatch = Utility.createStagger(0.5, updateProperty, true)
|
|
330
|
+
cloneJanitor:add(clone:GetPropertyChangedSignal(absoluteProperty):Connect(updatePropertyPatch))
|
|
331
|
+
|
|
332
|
+
-- When the screenGui is resized (such as when chat is hidden/shown), we need
|
|
333
|
+
-- to update the position of the clone. Ths especially fixes the following:
|
|
334
|
+
-- https://devforum.roblox.com/t/bug/1017485/1732
|
|
335
|
+
if property == "Position" then
|
|
336
|
+
cloneJanitor:add(screenGui:GetPropertyChangedSignal("AbsoluteSize"):Connect(function()
|
|
337
|
+
updatePropertyStaggered()
|
|
338
|
+
end))
|
|
339
|
+
end
|
|
340
|
+
|
|
341
|
+
end
|
|
342
|
+
task.delay(0.1, checkIfOutsideParentXBounds)
|
|
343
|
+
checkIfOutsideParentXBounds()
|
|
344
|
+
updateVisibility()
|
|
345
|
+
trackProperty("Position")
|
|
346
|
+
|
|
347
|
+
-- Track visiblity changes
|
|
348
|
+
cloneJanitor:add(instance:GetPropertyChangedSignal("Visible"):Connect(function()
|
|
349
|
+
--print("Visiblity changed:", instance, clone, instance.Visible)
|
|
350
|
+
--clone.Visible = instance.Visible
|
|
351
|
+
end))
|
|
352
|
+
|
|
353
|
+
-- To ensure accurate positioning, it's important the clone also remains the same size as the instance
|
|
354
|
+
local shouldTrackCloneSize = instance:GetAttribute("TrackCloneSize")
|
|
355
|
+
if shouldTrackCloneSize then
|
|
356
|
+
trackProperty("Size")
|
|
357
|
+
else
|
|
358
|
+
cloneJanitor:add(instance:GetPropertyChangedSignal("AbsoluteSize"):Connect(function()
|
|
359
|
+
local absolute = instance.AbsoluteSize
|
|
360
|
+
clone.Size = UDim2.fromOffset(absolute.X, absolute.Y)
|
|
361
|
+
end))
|
|
362
|
+
end
|
|
363
|
+
|
|
364
|
+
return clone
|
|
365
|
+
end
|
|
366
|
+
|
|
367
|
+
function Utility.joinFeature(originalIcon, parentIcon, iconsArray, scrollingFrameOrFrame)
|
|
368
|
+
|
|
369
|
+
-- This is resonsible for moving the icon under a feature like a dropdown
|
|
370
|
+
local joinJanitor = originalIcon.joinJanitor
|
|
371
|
+
joinJanitor:clean()
|
|
372
|
+
if not scrollingFrameOrFrame then
|
|
373
|
+
originalIcon:leave()
|
|
374
|
+
return
|
|
375
|
+
end
|
|
376
|
+
originalIcon.parentIconUID = parentIcon.UID
|
|
377
|
+
originalIcon.joinedFrame = scrollingFrameOrFrame
|
|
378
|
+
local function updateAlignent()
|
|
379
|
+
local parentAlignment = parentIcon.alignment
|
|
380
|
+
if parentAlignment == "Center" then
|
|
381
|
+
parentAlignment = "Left"
|
|
382
|
+
end
|
|
383
|
+
originalIcon:setAlignment(parentAlignment, true)
|
|
384
|
+
end
|
|
385
|
+
joinJanitor:add(parentIcon.alignmentChanged:Connect(updateAlignent))
|
|
386
|
+
updateAlignent()
|
|
387
|
+
originalIcon:modifyTheme({"IconButton", "BackgroundTransparency", 1}, "JoinModification")
|
|
388
|
+
originalIcon:modifyTheme({"ClickRegion", "Active", false}, "JoinModification")
|
|
389
|
+
if parentIcon.childModifications then
|
|
390
|
+
-- We defer so that the default values (such as dropdown
|
|
391
|
+
-- minimum width can be applied before any custom
|
|
392
|
+
-- child modifications from the user)
|
|
393
|
+
task.defer(function()
|
|
394
|
+
originalIcon:modifyTheme(parentIcon.childModifications, parentIcon.childModificationsUID)
|
|
395
|
+
end)
|
|
396
|
+
end
|
|
397
|
+
--
|
|
398
|
+
local clickRegion = originalIcon:getInstance("ClickRegion")
|
|
399
|
+
local function makeSelectable()
|
|
400
|
+
clickRegion.Selectable = parentIcon.isSelected
|
|
401
|
+
end
|
|
402
|
+
joinJanitor:add(parentIcon.toggled:Connect(makeSelectable))
|
|
403
|
+
task.defer(makeSelectable)
|
|
404
|
+
joinJanitor:add(function()
|
|
405
|
+
clickRegion.Selectable = true
|
|
406
|
+
end)
|
|
407
|
+
--
|
|
408
|
+
|
|
409
|
+
-- We track icons in arrays and dictionaries using their UID instead of the icon
|
|
410
|
+
-- itself to prevent heavy cyclical tables when printing the icons
|
|
411
|
+
local originalIconUID = originalIcon.UID
|
|
412
|
+
table.insert(iconsArray, originalIconUID)
|
|
413
|
+
parentIcon:autoDeselect(false)
|
|
414
|
+
parentIcon.childIconsDict[originalIconUID] = true
|
|
415
|
+
if not parentIcon.isEnabled then
|
|
416
|
+
parentIcon:setEnabled(true)
|
|
417
|
+
end
|
|
418
|
+
originalIcon.joinedParent:Fire(parentIcon)
|
|
419
|
+
|
|
420
|
+
-- This is responsible for removing it from that feature and updating
|
|
421
|
+
-- their parent icon so its informed of the icon leaving it
|
|
422
|
+
joinJanitor:add(function()
|
|
423
|
+
local joinedFrame = originalIcon.joinedFrame
|
|
424
|
+
if not joinedFrame then
|
|
425
|
+
return
|
|
426
|
+
end
|
|
427
|
+
for i, iconUID in pairs(iconsArray) do
|
|
428
|
+
if iconUID == originalIconUID then
|
|
429
|
+
table.remove(iconsArray, i)
|
|
430
|
+
break
|
|
431
|
+
end
|
|
432
|
+
end
|
|
433
|
+
local Icon = require(originalIcon.iconModule)
|
|
434
|
+
local parentIcon = Icon.getIconByUID(originalIcon.parentIconUID)
|
|
435
|
+
if not parentIcon then
|
|
436
|
+
return
|
|
437
|
+
end
|
|
438
|
+
originalIcon:setAlignment(originalIcon.originalAlignment)
|
|
439
|
+
originalIcon.parentIconUID = false
|
|
440
|
+
originalIcon.joinedFrame = false
|
|
441
|
+
--originalIcon:setBehaviour("IconButton", "BackgroundTransparency", nil, true)
|
|
442
|
+
originalIcon:removeModification("JoinModification")
|
|
443
|
+
|
|
444
|
+
local parentHasNoChildren = true
|
|
445
|
+
local parentChildIcons = parentIcon.childIconsDict
|
|
446
|
+
parentChildIcons[originalIconUID] = nil
|
|
447
|
+
for childIconUID, _ in pairs(parentChildIcons) do
|
|
448
|
+
parentHasNoChildren = false
|
|
449
|
+
break
|
|
450
|
+
end
|
|
451
|
+
if parentHasNoChildren and not parentIcon.isAnOverflow then
|
|
452
|
+
parentIcon:setEnabled(false)
|
|
453
|
+
end
|
|
454
|
+
updateAlignent()
|
|
455
|
+
|
|
456
|
+
end)
|
|
457
|
+
|
|
458
|
+
end
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
return Utility
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
--!strict
|
|
2
|
+
-- LOCAL
|
|
3
|
+
local VERSION = {}
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
-- SHARED
|
|
8
|
+
VERSION.appVersion = "v3.4.0"
|
|
9
|
+
VERSION.latestVersion = nil :: string?
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
-- FUNCTIONS
|
|
14
|
+
function VERSION.getLatestVersion(): string?
|
|
15
|
+
local DEVELOPMENT_PLACE_ID = 117501901079852
|
|
16
|
+
local latestVersion = VERSION.latestVersion
|
|
17
|
+
if latestVersion then
|
|
18
|
+
return latestVersion
|
|
19
|
+
end
|
|
20
|
+
local placeName = ""
|
|
21
|
+
while true do
|
|
22
|
+
local success, hdDevelopmentDetails = pcall(function()
|
|
23
|
+
return game:GetService("MarketplaceService"):GetProductInfo(DEVELOPMENT_PLACE_ID)
|
|
24
|
+
end)
|
|
25
|
+
if success and hdDevelopmentDetails then
|
|
26
|
+
placeName = hdDevelopmentDetails.Name
|
|
27
|
+
break
|
|
28
|
+
end
|
|
29
|
+
task.wait(1)
|
|
30
|
+
end
|
|
31
|
+
latestVersion = string.match(placeName, "^TopbarPlus (.*)$")
|
|
32
|
+
if latestVersion then
|
|
33
|
+
latestVersion = latestVersion:gsub("%s+", "") -- Remove all whitespace (spaces, tabs, newlines)
|
|
34
|
+
end
|
|
35
|
+
VERSION.latestVersion = latestVersion
|
|
36
|
+
return latestVersion
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
function VERSION.getAppVersion()
|
|
40
|
+
return VERSION.appVersion
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
function VERSION.isUpToDate()
|
|
44
|
+
local latestVersion = VERSION.getLatestVersion()
|
|
45
|
+
local appVersion = VERSION.getAppVersion()
|
|
46
|
+
return latestVersion ~= nil and latestVersion == appVersion
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
return VERSION
|