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,1016 @@
|
|
|
1
|
+
const Entity = {}
|
|
2
|
+
|
|
3
|
+
const Players = game:GetService("Players")
|
|
4
|
+
const RunService = game:GetService("RunService")
|
|
5
|
+
const Types = require(script.Parent.Types)
|
|
6
|
+
const Config = require(script.Parent.Config)
|
|
7
|
+
const Snapshot = require(script.Parent.Snapshots)
|
|
8
|
+
const InterpolationMath = require(script.Parent.InterpolationMath)
|
|
9
|
+
const ClientClock = require(script.Parent.Parent.Client.ClientClock)
|
|
10
|
+
const Holder = require(script.Parent.Holder)
|
|
11
|
+
const Signal = require(script.Parent.Signal)
|
|
12
|
+
const Events = require(script.Parent.Events)
|
|
13
|
+
const ModelHelper = require(script.Parent.ModelHelper)
|
|
14
|
+
const Warn = require(script.Parent.Warn)
|
|
15
|
+
const VelocityAt = InterpolationMath.VelocityAt
|
|
16
|
+
|
|
17
|
+
const Changes = {}
|
|
18
|
+
|
|
19
|
+
const clientOwned = Holder._clientOwned
|
|
20
|
+
const IS_SERVER = RunService:IsServer()
|
|
21
|
+
const LOCAL_PLAYER = if IS_SERVER then nil else Players.LocalPlayer
|
|
22
|
+
|
|
23
|
+
const CHRONO_PRIMARY = "__CHRONO_PRIMARY"
|
|
24
|
+
|
|
25
|
+
const CENTER_PART = Instance.new("Part")
|
|
26
|
+
CENTER_PART.Size = Vector3.new(0.1, 0.1, 0.1)
|
|
27
|
+
CENTER_PART.Name = "__CHRONO_CENTER"
|
|
28
|
+
CENTER_PART.Anchored = true
|
|
29
|
+
CENTER_PART.Transparency = 1
|
|
30
|
+
CENTER_PART.CanCollide = false
|
|
31
|
+
CENTER_PART.CanTouch = false
|
|
32
|
+
CENTER_PART.CanQuery = false
|
|
33
|
+
|
|
34
|
+
type Entity = Types.Entity
|
|
35
|
+
|
|
36
|
+
local READY = false
|
|
37
|
+
|
|
38
|
+
Config._WaitForLock(function()
|
|
39
|
+
READY = true
|
|
40
|
+
end)
|
|
41
|
+
|
|
42
|
+
const function SafeDestroy(instance: Instance?)
|
|
43
|
+
if instance then
|
|
44
|
+
pcall(function()
|
|
45
|
+
instance:Destroy()
|
|
46
|
+
end)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
const function SafeSetNetworkOwner(part: BasePart, player: Player?)
|
|
51
|
+
pcall(function()
|
|
52
|
+
part:SetNetworkOwner(player)
|
|
53
|
+
end)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
const function GetPart(self: Types.Entity): BasePart?
|
|
57
|
+
const model = self.model
|
|
58
|
+
if not model then
|
|
59
|
+
return nil
|
|
60
|
+
end
|
|
61
|
+
if model:IsA("BasePart") then
|
|
62
|
+
return model
|
|
63
|
+
end
|
|
64
|
+
if model:IsA("Model") then
|
|
65
|
+
const chronoPrimary = self._chronoPrimary
|
|
66
|
+
if chronoPrimary then
|
|
67
|
+
const primary = model:FindFirstChild(chronoPrimary)
|
|
68
|
+
if primary and primary:IsA("BasePart") then
|
|
69
|
+
return primary
|
|
70
|
+
else
|
|
71
|
+
Warn.low(
|
|
72
|
+
`Chrono primary part {chronoPrimary} not found or not a BasePart in model {model:GetFullName()} for entity id {self.id}. Falling back to default PrimaryPart.`
|
|
73
|
+
)
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
const primaryPart = model.PrimaryPart
|
|
77
|
+
if primaryPart then
|
|
78
|
+
return primaryPart
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
return nil
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
const function GetRootPart(entity: Entity): BasePart?
|
|
85
|
+
const primaryPart = Entity.GetPrimaryPart(entity)
|
|
86
|
+
|
|
87
|
+
if not primaryPart then
|
|
88
|
+
return
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
if IS_SERVER and entity._lockedCFReplication then
|
|
92
|
+
const locker = primaryPart:FindFirstChild("__CHRONO_LOCKER")
|
|
93
|
+
|
|
94
|
+
if not locker then
|
|
95
|
+
return
|
|
96
|
+
end
|
|
97
|
+
const lockerPart = locker:FindFirstChildWhichIsA("BasePart")
|
|
98
|
+
if not lockerPart or not lockerPart:IsA("BasePart") then
|
|
99
|
+
return primaryPart
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
return lockerPart
|
|
103
|
+
else
|
|
104
|
+
return primaryPart
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
const function LockCFReplication(part: BasePart?): BasePart?
|
|
109
|
+
if not part then
|
|
110
|
+
return
|
|
111
|
+
end
|
|
112
|
+
const initCF = part.CFrame
|
|
113
|
+
const previousLocker = part:FindFirstChild("__CHRONO_LOCKER")
|
|
114
|
+
if previousLocker then
|
|
115
|
+
const weld = previousLocker:FindFirstChild("__CHRONO_WELD") :: Motor6D
|
|
116
|
+
if weld then
|
|
117
|
+
weld.Part1 = part
|
|
118
|
+
part.CFrame = initCF
|
|
119
|
+
return weld.Part0
|
|
120
|
+
else
|
|
121
|
+
SafeDestroy(previousLocker)
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
const camera = Instance.new("Camera", part)
|
|
126
|
+
camera.Archivable = false
|
|
127
|
+
camera.Name = "__CHRONO_LOCKER"
|
|
128
|
+
const weld = Instance.new("Weld", camera)
|
|
129
|
+
weld.Name = "__CHRONO_WELD"
|
|
130
|
+
const locker = Instance.new("Part")
|
|
131
|
+
locker.CustomPhysicalProperties = PhysicalProperties.new(0.0001, 0, 0, 0, 0)
|
|
132
|
+
locker.Name = "__CHRONO_LOCKER_PART"
|
|
133
|
+
locker.Parent = camera
|
|
134
|
+
locker.CanCollide = false
|
|
135
|
+
locker.CanQuery = false
|
|
136
|
+
locker.CanTouch = false
|
|
137
|
+
locker.Transparency = if IS_SERVER then 0 else 1
|
|
138
|
+
locker.Color = Color3.new(1, 0, 0)
|
|
139
|
+
locker.Massless = false
|
|
140
|
+
locker.RootPriority = 127
|
|
141
|
+
locker.Size = Vector3.zero
|
|
142
|
+
--locker.Anchored = true
|
|
143
|
+
weld.Part0 = locker
|
|
144
|
+
weld.Part1 = part
|
|
145
|
+
part.CFrame = initCF
|
|
146
|
+
return locker
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
const function SetPartCFrame(entity, cframe: CFrame)
|
|
150
|
+
const part = GetRootPart(entity)
|
|
151
|
+
if part then
|
|
152
|
+
part.CFrame = cframe
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
const function UnlockCFReplication(part: BasePart?)
|
|
157
|
+
if not part then
|
|
158
|
+
return
|
|
159
|
+
end
|
|
160
|
+
const cf = part.CFrame
|
|
161
|
+
const locker = part:FindFirstChild("__CHRONO_LOCKER")
|
|
162
|
+
if locker then
|
|
163
|
+
-- local weld = locker:FindFirstChild("__CHRONO_WELD") :: Motor6D
|
|
164
|
+
-- if weld then
|
|
165
|
+
-- weld.Part1 = nil
|
|
166
|
+
-- else
|
|
167
|
+
-- SafeDestroy(locker)
|
|
168
|
+
-- end
|
|
169
|
+
--Safer overall to just destroy and recreate
|
|
170
|
+
locker:Destroy()
|
|
171
|
+
part.CFrame = cf
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
const function SetValue(entity: Entity, key: string, value: any, bypass: boolean?, specialValue: any)
|
|
176
|
+
if not bypass and entity[key] == value then
|
|
177
|
+
return
|
|
178
|
+
end
|
|
179
|
+
entity[key] = value
|
|
180
|
+
if not IS_SERVER then
|
|
181
|
+
return
|
|
182
|
+
end
|
|
183
|
+
if not Changes[entity] then
|
|
184
|
+
Changes[entity] = {}
|
|
185
|
+
end
|
|
186
|
+
Changes[entity][key] = specialValue or value or false
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
const function FireEvent(entity: Entity, eventName: string, ...: any)
|
|
190
|
+
const events = entity._events
|
|
191
|
+
if not events then
|
|
192
|
+
return
|
|
193
|
+
end
|
|
194
|
+
const signal = events[eventName]
|
|
195
|
+
if signal then
|
|
196
|
+
signal:Fire(entity, ...)
|
|
197
|
+
end
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
-- If buffer is given then it will create a client clock for the entity as well.
|
|
201
|
+
const function SetClock(self: Entity, buffer: number | false?)
|
|
202
|
+
if self._clientClock then
|
|
203
|
+
self._clientClock:Destroy()
|
|
204
|
+
self._clientClock = nil
|
|
205
|
+
end
|
|
206
|
+
if buffer == false then
|
|
207
|
+
self._clockBuffer = nil
|
|
208
|
+
buffer = nil
|
|
209
|
+
end
|
|
210
|
+
buffer = buffer or self._clockBuffer
|
|
211
|
+
self._clockBuffer = buffer
|
|
212
|
+
const entityBuffer = buffer or self.entityConfig.BUFFER or 0
|
|
213
|
+
if self.networkOwner or buffer then
|
|
214
|
+
const networkOwner = self.networkOwner
|
|
215
|
+
self._clientClock = ClientClock.new(
|
|
216
|
+
self.entityConfig.TICK_RATE,
|
|
217
|
+
`Entity id: {self.id} plr: {networkOwner and networkOwner.Name or "SERVER"}`,
|
|
218
|
+
entityBuffer,
|
|
219
|
+
networkOwner
|
|
220
|
+
)
|
|
221
|
+
end
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
const function CheckNetworkOwner(self: Entity, prev: Player?)
|
|
225
|
+
self.isContextOwner = self.networkOwner == LOCAL_PLAYER
|
|
226
|
+
const isSameOwner = self.networkOwner == prev
|
|
227
|
+
if not isSameOwner then
|
|
228
|
+
self.latestTime = 0
|
|
229
|
+
self.lastClientClock = 0
|
|
230
|
+
end
|
|
231
|
+
if IS_SERVER then
|
|
232
|
+
const part = GetPart(self)
|
|
233
|
+
if part then
|
|
234
|
+
const locked = self._lockedCFReplication
|
|
235
|
+
|
|
236
|
+
if locked then
|
|
237
|
+
UnlockCFReplication(part)
|
|
238
|
+
end
|
|
239
|
+
SafeSetNetworkOwner(part, self.networkOwner)
|
|
240
|
+
if locked then
|
|
241
|
+
LockCFReplication(part)
|
|
242
|
+
const root = GetRootPart(self)
|
|
243
|
+
if root then
|
|
244
|
+
SafeSetNetworkOwner(root, self.networkOwner)
|
|
245
|
+
root.Anchored = not isSameOwner
|
|
246
|
+
end
|
|
247
|
+
end
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
if self.isContextOwner and not self.entityConfig.STORE_SNAPSHOTS then
|
|
251
|
+
self.snapshot = nil
|
|
252
|
+
elseif not self.snapshot then
|
|
253
|
+
self.snapshot = Snapshot(InterpolationMath.Hermite)
|
|
254
|
+
end
|
|
255
|
+
else
|
|
256
|
+
const locked = self._lockedCFReplication
|
|
257
|
+
|
|
258
|
+
if locked and self.isContextOwner then
|
|
259
|
+
const part = GetPart(self)
|
|
260
|
+
if part then
|
|
261
|
+
LockCFReplication(part)
|
|
262
|
+
self._cfLockFailed = nil
|
|
263
|
+
else
|
|
264
|
+
self._cfLockFailed = true
|
|
265
|
+
end
|
|
266
|
+
if self._player then
|
|
267
|
+
UnlockCFReplication(part)
|
|
268
|
+
end
|
|
269
|
+
end
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
if isSameOwner then
|
|
273
|
+
return
|
|
274
|
+
elseif self.snapshot then
|
|
275
|
+
self.snapshot:Clear()
|
|
276
|
+
end
|
|
277
|
+
|
|
278
|
+
if not IS_SERVER then
|
|
279
|
+
SetClock(self)
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
FireEvent(self, "NetworkOwnerChanged", self.networkOwner, prev)
|
|
283
|
+
|
|
284
|
+
if prev then
|
|
285
|
+
const ownedEntities = clientOwned[prev]
|
|
286
|
+
|
|
287
|
+
if ownedEntities then
|
|
288
|
+
ownedEntities[self] = nil
|
|
289
|
+
|
|
290
|
+
Events._Signals.PlayerOwnedRemoved:Fire(prev, self)
|
|
291
|
+
end
|
|
292
|
+
end
|
|
293
|
+
if self.networkOwner then
|
|
294
|
+
const ownedEntities = clientOwned[self.networkOwner]
|
|
295
|
+
|
|
296
|
+
if not ownedEntities then
|
|
297
|
+
return
|
|
298
|
+
end
|
|
299
|
+
ownedEntities[self] = true
|
|
300
|
+
|
|
301
|
+
Events._Signals.PlayerOwnedAdded:Fire(self.networkOwner, self)
|
|
302
|
+
end
|
|
303
|
+
end
|
|
304
|
+
|
|
305
|
+
function Entity.SyncOwnerShip(self: Entity)
|
|
306
|
+
CheckNetworkOwner(self, self.networkOwner)
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
const function CheckModelReplicationMode(entity: Entity, mode: Types.MODEL_REPLICATION_MODE?): "NATIVE" | "CUSTOM"
|
|
310
|
+
if not mode then
|
|
311
|
+
mode = entity.modelReplicationMode
|
|
312
|
+
end
|
|
313
|
+
if not mode then
|
|
314
|
+
const config = entity.entityConfig
|
|
315
|
+
mode = config.MODEL_REPLICATION_MODE
|
|
316
|
+
end
|
|
317
|
+
mode = (mode :: any):upper()
|
|
318
|
+
if mode ~= "NATIVE" and mode ~= "CUSTOM" and mode ~= "NATIVE_WITH_LOCK" then
|
|
319
|
+
Warn.medium(`Invalid model replication mode {mode} for entity id {entity.id}, defaulting to NATIVE`)
|
|
320
|
+
mode = "NATIVE"
|
|
321
|
+
end
|
|
322
|
+
entity._lockedCFReplication = false
|
|
323
|
+
if mode == "NATIVE_WITH_LOCK" then
|
|
324
|
+
mode = "NATIVE"
|
|
325
|
+
entity._lockedCFReplication = true
|
|
326
|
+
end
|
|
327
|
+
return mode :: any
|
|
328
|
+
end
|
|
329
|
+
|
|
330
|
+
const function SetModel(
|
|
331
|
+
self: Entity,
|
|
332
|
+
model: Model | BasePart | string?,
|
|
333
|
+
modelReplicationMode: Types.MODEL_REPLICATION_MODE?,
|
|
334
|
+
noDestroy: boolean?
|
|
335
|
+
): ()
|
|
336
|
+
const wasCustom = self.modelReplicationMode == "CUSTOM"
|
|
337
|
+
|
|
338
|
+
if IS_SERVER then
|
|
339
|
+
if self.modelReplicationMode == "NATIVE" and self._lockedCFReplication then
|
|
340
|
+
const part = GetPart(self)
|
|
341
|
+
self._lockedCFReplication = false
|
|
342
|
+
UnlockCFReplication(part)
|
|
343
|
+
end
|
|
344
|
+
if not noDestroy then
|
|
345
|
+
SafeDestroy(self.model)
|
|
346
|
+
end
|
|
347
|
+
self.model = nil
|
|
348
|
+
elseif not IS_SERVER and wasCustom then
|
|
349
|
+
SafeDestroy(self.model)
|
|
350
|
+
self.model = nil
|
|
351
|
+
elseif not IS_SERVER and self._lockedCFReplication then
|
|
352
|
+
const part = GetPart(self)
|
|
353
|
+
self._lockedCFReplication = false
|
|
354
|
+
UnlockCFReplication(part)
|
|
355
|
+
end
|
|
356
|
+
local modelString
|
|
357
|
+
if type(model) == "string" then
|
|
358
|
+
modelString = model
|
|
359
|
+
model = Config._GetEntityModel(model :: string)
|
|
360
|
+
if model then
|
|
361
|
+
model = (model :: any):Clone()
|
|
362
|
+
end
|
|
363
|
+
|
|
364
|
+
if model then
|
|
365
|
+
(model :: any).Parent = workspace
|
|
366
|
+
end
|
|
367
|
+
end
|
|
368
|
+
const _model: Model? = model :: any
|
|
369
|
+
const broadPhase = Config._GetBroadPhase(modelString :: string)
|
|
370
|
+
|
|
371
|
+
const replicationMode: "NATIVE" | "CUSTOM" = CheckModelReplicationMode(self, modelReplicationMode)
|
|
372
|
+
self.modelString = modelString
|
|
373
|
+
self.model = _model
|
|
374
|
+
|
|
375
|
+
if IS_SERVER or not self.broadPhase then
|
|
376
|
+
self.broadPhase = broadPhase
|
|
377
|
+
end
|
|
378
|
+
|
|
379
|
+
if _model then
|
|
380
|
+
if replicationMode == "CUSTOM" then
|
|
381
|
+
_model.Parent = Holder.GetEntityStorageInstance()
|
|
382
|
+
end
|
|
383
|
+
|
|
384
|
+
const chronoPrimary = _model:GetAttribute(CHRONO_PRIMARY)
|
|
385
|
+
if chronoPrimary and type(chronoPrimary) == "string" then
|
|
386
|
+
self._chronoPrimary = chronoPrimary
|
|
387
|
+
end
|
|
388
|
+
end
|
|
389
|
+
|
|
390
|
+
self.modelReplicationMode = replicationMode
|
|
391
|
+
|
|
392
|
+
const primaryPart = GetPart(self)
|
|
393
|
+
if _model and not primaryPart then
|
|
394
|
+
const warn = IS_SERVER and Warn.high or Warn.low
|
|
395
|
+
warn(`{_model:GetFullName()} must have a PrimaryPart set for things like autoReplication and movement.`)
|
|
396
|
+
elseif _model and not _model.Archivable then
|
|
397
|
+
Warn.low(
|
|
398
|
+
`{_model:GetFullName()} is not Archivable. It is recommended to set Archivable to true for entity models to prevent potential issues when cloning. Archivable has been set to true automatically.`
|
|
399
|
+
)
|
|
400
|
+
_model.Archivable = true
|
|
401
|
+
end
|
|
402
|
+
|
|
403
|
+
if not primaryPart then
|
|
404
|
+
return
|
|
405
|
+
end
|
|
406
|
+
|
|
407
|
+
const initCFrame = primaryPart.CFrame
|
|
408
|
+
|
|
409
|
+
if not self.latestCFrame then
|
|
410
|
+
Entity.SetCFrame(self, initCFrame or primaryPart.CFrame)
|
|
411
|
+
end
|
|
412
|
+
if self.latestCFrame then
|
|
413
|
+
primaryPart.CFrame = self.latestCFrame
|
|
414
|
+
end
|
|
415
|
+
|
|
416
|
+
self.modelReplicationMode = Entity.GetModelReplicationType(self) :: any
|
|
417
|
+
if self.modelReplicationMode == "NATIVE_WITH_LOCK" then
|
|
418
|
+
self._lockedCFReplication = true
|
|
419
|
+
self.modelReplicationMode = "NATIVE"
|
|
420
|
+
end
|
|
421
|
+
if not IS_SERVER and not self.isContextOwner and (replicationMode == "CUSTOM" or self._lockedCFReplication) then
|
|
422
|
+
primaryPart.Anchored = true
|
|
423
|
+
end
|
|
424
|
+
end
|
|
425
|
+
|
|
426
|
+
function Entity._new(
|
|
427
|
+
entityConfig: string?,
|
|
428
|
+
model: Model | BasePart | string?,
|
|
429
|
+
modelReplicationMode: Types.MODEL_REPLICATION_MODE?,
|
|
430
|
+
initCFrame: CFrame?
|
|
431
|
+
): Entity
|
|
432
|
+
local config = Config._GetEntityType(entityConfig)
|
|
433
|
+
if not config then
|
|
434
|
+
Warn.medium(`Entity config {entityConfig} not found. Using DEFAULT config.`)
|
|
435
|
+
config = Config._GetEntityType("DEFAULT")
|
|
436
|
+
end
|
|
437
|
+
|
|
438
|
+
-- If the model doesn't exist and there's no init cframe then it won't be able to find a starting cframe
|
|
439
|
+
if initCFrame == nil and typeof(model) == "string" then
|
|
440
|
+
const _model = Config._GetEntityModel(model :: string)
|
|
441
|
+
if _model == false then
|
|
442
|
+
Warn.medium(`Entity's model doesn't exist, initCFrame is required. DEFAULTING to CFrame.new(0, 0, 0)`)
|
|
443
|
+
initCFrame = CFrame.new(0, 0, 0)
|
|
444
|
+
end
|
|
445
|
+
end
|
|
446
|
+
|
|
447
|
+
const self: Entity = {
|
|
448
|
+
id = -1,
|
|
449
|
+
|
|
450
|
+
registered = false,
|
|
451
|
+
autoUpdatePosition = config.AUTO_UPDATE_POSITION ~= false,
|
|
452
|
+
isContextOwner = false,
|
|
453
|
+
networkOwner = nil,
|
|
454
|
+
latestCFrame = initCFrame,
|
|
455
|
+
paused = false,
|
|
456
|
+
|
|
457
|
+
entityConfig = config,
|
|
458
|
+
destroyed = false,
|
|
459
|
+
|
|
460
|
+
interpolation = not IS_SERVER and true,
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
if LOCAL_PLAYER then
|
|
464
|
+
self.snapshot = Snapshot(InterpolationMath.Hermite)
|
|
465
|
+
end
|
|
466
|
+
SetModel(self, model, modelReplicationMode)
|
|
467
|
+
CheckNetworkOwner(self, nil)
|
|
468
|
+
|
|
469
|
+
return self
|
|
470
|
+
end
|
|
471
|
+
|
|
472
|
+
--[=[
|
|
473
|
+
Creates a new Entity instance and registers.
|
|
474
|
+
|
|
475
|
+
@param entityConfig The entity configuration name to use. Defaults to "DEFAULT" if not provided or invalid.
|
|
476
|
+
@param model The model to use for the entity. Can be a Model, BasePart, or a string representing a registered model name.
|
|
477
|
+
@param modelReplicationMode The model replication mode to use. Will default of the entity config if not provided.
|
|
478
|
+
@param initCFrame The initial CFrame for the entity. Optional.
|
|
479
|
+
|
|
480
|
+
@return The newly created Entity instance.
|
|
481
|
+
]=]
|
|
482
|
+
function Entity.new(
|
|
483
|
+
entityConfig: string?,
|
|
484
|
+
model: Model | BasePart | string?,
|
|
485
|
+
modelReplicationMode: Types.MODEL_REPLICATION_MODE?,
|
|
486
|
+
initCFrame: CFrame?
|
|
487
|
+
): Entity
|
|
488
|
+
if not READY then
|
|
489
|
+
error("Entity.new cannot be called until Chrono.Start() is called.")
|
|
490
|
+
end
|
|
491
|
+
const self = Entity._new(entityConfig, model, modelReplicationMode, initCFrame)
|
|
492
|
+
Holder.RegisterEntity(self)
|
|
493
|
+
return self
|
|
494
|
+
end
|
|
495
|
+
|
|
496
|
+
--[=[
|
|
497
|
+
Sets the model for the entity.
|
|
498
|
+
|
|
499
|
+
@param model The model to set for the entity. Can be a Model, BasePart, or a string representing a registered model name.
|
|
500
|
+
@param modelReplicationMode The model replication mode to use. Will default to the last used mode or the entity config if not provided.
|
|
501
|
+
@param noDestroy If true, will not destroy the previous model. Defaults to false.
|
|
502
|
+
]=]
|
|
503
|
+
function Entity.SetModel(
|
|
504
|
+
self: Entity,
|
|
505
|
+
model: Model | BasePart | string?,
|
|
506
|
+
modelReplicationMode: Types.MODEL_REPLICATION_MODE?,
|
|
507
|
+
noDestroy: boolean?
|
|
508
|
+
)
|
|
509
|
+
const old = self.model
|
|
510
|
+
SetModel(self, model, modelReplicationMode, noDestroy)
|
|
511
|
+
if IS_SERVER then
|
|
512
|
+
const toReplicate, metaData = ModelHelper.ReadyModelFromRep(self, nil)
|
|
513
|
+
SetValue(self, "model", self.model, true, toReplicate or false)
|
|
514
|
+
SetValue(self, "_modelMetaData", metaData, true, metaData)
|
|
515
|
+
CheckNetworkOwner(self, self.networkOwner)
|
|
516
|
+
end
|
|
517
|
+
FireEvent(self, "ModelChanged", self.model, old)
|
|
518
|
+
end
|
|
519
|
+
|
|
520
|
+
Entity._FireEvent = FireEvent
|
|
521
|
+
|
|
522
|
+
const function GetEvent(self: Entity, eventName: string): Types.Event<any>
|
|
523
|
+
if not self._events then
|
|
524
|
+
self._events = {}
|
|
525
|
+
end
|
|
526
|
+
const events = self._events :: { [string]: Types.Signal<any, any> }
|
|
527
|
+
if not events[eventName] then
|
|
528
|
+
events[eventName] = Signal.new()
|
|
529
|
+
end
|
|
530
|
+
return events[eventName].Event
|
|
531
|
+
end
|
|
532
|
+
|
|
533
|
+
--[=[
|
|
534
|
+
Sets the entity configuration for the entity.
|
|
535
|
+
|
|
536
|
+
@param entityConfig The entity configuration name to set.
|
|
537
|
+
]=]
|
|
538
|
+
function Entity.SetConfig(self: Entity, entityConfig: string)
|
|
539
|
+
local config = Config._GetEntityType(entityConfig)
|
|
540
|
+
if not config then
|
|
541
|
+
Warn.medium(`Entity config {entityConfig} not found. Using Default config.`)
|
|
542
|
+
config = Config._GetEntityType("DEFAULT")
|
|
543
|
+
end
|
|
544
|
+
SetValue(self, "entityConfig", config, false, config.NAME)
|
|
545
|
+
if not IS_SERVER then
|
|
546
|
+
SetClock(self)
|
|
547
|
+
end
|
|
548
|
+
end
|
|
549
|
+
|
|
550
|
+
--[=[
|
|
551
|
+
Sets the client clock buffer for the entity.
|
|
552
|
+
|
|
553
|
+
@param buffer? The buffer to set for the client clock. If nil, will use the entity config's buffer.
|
|
554
|
+
]=]
|
|
555
|
+
function Entity.SetClockBuffer(self: Entity, buffer: number?)
|
|
556
|
+
if IS_SERVER then
|
|
557
|
+
error("SetClockBuffer can only be called on the client")
|
|
558
|
+
end
|
|
559
|
+
SetClock(self, buffer ~= nil and buffer or false)
|
|
560
|
+
end
|
|
561
|
+
|
|
562
|
+
--[=[
|
|
563
|
+
Sets the broad phase vector for the entity.
|
|
564
|
+
|
|
565
|
+
@param broadPhase The broad phase vector to set.
|
|
566
|
+
]=]
|
|
567
|
+
function Entity.SetBroadPhase(self: Entity, broadPhase: vector?)
|
|
568
|
+
SetValue(self, "broadPhase", broadPhase)
|
|
569
|
+
end
|
|
570
|
+
|
|
571
|
+
--[=[
|
|
572
|
+
Gets the user associated data with the entity.
|
|
573
|
+
|
|
574
|
+
@return The data associated with the entity.
|
|
575
|
+
]=]
|
|
576
|
+
function Entity.GetData(self: Entity): any
|
|
577
|
+
return self._data
|
|
578
|
+
end
|
|
579
|
+
|
|
580
|
+
--[=[
|
|
581
|
+
Gets the model associated with the entity.
|
|
582
|
+
|
|
583
|
+
@return The model associated with the entity.
|
|
584
|
+
]=]
|
|
585
|
+
function Entity.GetModel(self: Entity): Model | BasePart?
|
|
586
|
+
return self.model
|
|
587
|
+
end
|
|
588
|
+
|
|
589
|
+
--[=[
|
|
590
|
+
Sets the user associated data with the entity.
|
|
591
|
+
|
|
592
|
+
@param data The data to associate with the entity.
|
|
593
|
+
]=]
|
|
594
|
+
function Entity.SetData(self: Entity, data: any)
|
|
595
|
+
SetValue(self, "_data", data, true)
|
|
596
|
+
FireEvent(self, "DataChanged", data)
|
|
597
|
+
end
|
|
598
|
+
|
|
599
|
+
function Entity._SetTickMode(self: Entity, isHalfTicked: boolean?)
|
|
600
|
+
if self.isHalfTicked == isHalfTicked then
|
|
601
|
+
return
|
|
602
|
+
end
|
|
603
|
+
if not self.isContextOwner then
|
|
604
|
+
SetValue(self, "isHalfTicked", isHalfTicked)
|
|
605
|
+
else
|
|
606
|
+
self.isHalfTicked = isHalfTicked
|
|
607
|
+
end
|
|
608
|
+
FireEvent(self, "TickChanged", isHalfTicked == nil and "NONE" or if isHalfTicked then "HALF" else "NORMAL")
|
|
609
|
+
end
|
|
610
|
+
|
|
611
|
+
--[=[
|
|
612
|
+
Clears the mount of the entity.
|
|
613
|
+
]=]
|
|
614
|
+
function Entity.ClearMount(self: Entity)
|
|
615
|
+
if not IS_SERVER then
|
|
616
|
+
error("ClearMount can only be called on the server")
|
|
617
|
+
end
|
|
618
|
+
if not self.mountParentId then
|
|
619
|
+
return
|
|
620
|
+
end
|
|
621
|
+
|
|
622
|
+
SetValue(self, "mountParentId", nil)
|
|
623
|
+
SetValue(self, "mountOffset", nil)
|
|
624
|
+
Events._Signals.EntityMountChanged:Fire(self, nil)
|
|
625
|
+
end
|
|
626
|
+
|
|
627
|
+
--[=[
|
|
628
|
+
Sets the mount of the entity.
|
|
629
|
+
|
|
630
|
+
@param parent The parent entity to mount to. If nil, will clear the mount.
|
|
631
|
+
@param offset The CFrame offset from the parent entity.
|
|
632
|
+
]=]
|
|
633
|
+
function Entity.SetMount(self: Entity, parent: Entity?, offset: CFrame?)
|
|
634
|
+
if not IS_SERVER then
|
|
635
|
+
error("SetMount can only be called on the server")
|
|
636
|
+
end
|
|
637
|
+
|
|
638
|
+
if parent == nil then
|
|
639
|
+
return Entity.ClearMount(self)
|
|
640
|
+
end
|
|
641
|
+
|
|
642
|
+
if self == parent then
|
|
643
|
+
Warn.medium("An entity cannot mount itself")
|
|
644
|
+
return
|
|
645
|
+
end
|
|
646
|
+
|
|
647
|
+
if not parent.id then
|
|
648
|
+
Warn.high("Parent entity must be registered before mounting")
|
|
649
|
+
return
|
|
650
|
+
end
|
|
651
|
+
|
|
652
|
+
SetValue(self, "mountParentId", parent.id)
|
|
653
|
+
SetValue(self, "mountOffset", offset)
|
|
654
|
+
Events._Signals.EntityMountChanged:Fire(self, parent.id)
|
|
655
|
+
end
|
|
656
|
+
|
|
657
|
+
Entity["设置网络主控玩家"] = function(self: Entity, player: Player?)
|
|
658
|
+
if player ~= self.networkOwner then
|
|
659
|
+
const prev = self.networkOwner
|
|
660
|
+
SetValue(self, "networkOwner", player)
|
|
661
|
+
CheckNetworkOwner(self, prev)
|
|
662
|
+
Entity.Clear(self)
|
|
663
|
+
end
|
|
664
|
+
self.lastCheckedCFrame = nil
|
|
665
|
+
if not IS_SERVER and self.modelReplicationMode == "CUSTOM" then
|
|
666
|
+
const primaryPart = Entity.GetPrimaryPart(self)
|
|
667
|
+
if primaryPart then
|
|
668
|
+
primaryPart.Anchored = not self.isContextOwner
|
|
669
|
+
end
|
|
670
|
+
end
|
|
671
|
+
end
|
|
672
|
+
|
|
673
|
+
--[=[
|
|
674
|
+
Sets the network owner of the entity. Does nothing if called on the client.
|
|
675
|
+
|
|
676
|
+
@param player The player to set as the network owner. If nil, will clear the network owner.
|
|
677
|
+
]=]
|
|
678
|
+
function Entity.SetNetworkOwner(self: Entity, player: Player?)
|
|
679
|
+
if IS_SERVER and player ~= self.networkOwner then
|
|
680
|
+
Entity["设置网络主控玩家"](self, player)
|
|
681
|
+
SetValue(self, "isHalfTicked", self.isHalfTicked, true)
|
|
682
|
+
elseif not IS_SERVER then
|
|
683
|
+
error("SetNetworkOwner can only be called on the server")
|
|
684
|
+
end
|
|
685
|
+
end
|
|
686
|
+
|
|
687
|
+
--[=[
|
|
688
|
+
Clears the entity's snapshot and latest CFrame/time.
|
|
689
|
+
]=]
|
|
690
|
+
function Entity.Clear(self: Entity)
|
|
691
|
+
const snapshot = self.snapshot
|
|
692
|
+
-- self.latestCFrame = nil --< this line
|
|
693
|
+
self.latestTime = nil
|
|
694
|
+
self.lastClientClock = nil
|
|
695
|
+
if snapshot then
|
|
696
|
+
snapshot:Clear()
|
|
697
|
+
end
|
|
698
|
+
end
|
|
699
|
+
|
|
700
|
+
--[=[
|
|
701
|
+
Pauses replication for the entity.
|
|
702
|
+
]=]
|
|
703
|
+
function Entity.PauseReplication(self: Entity)
|
|
704
|
+
SetValue(self, "paused", true)
|
|
705
|
+
end
|
|
706
|
+
|
|
707
|
+
--[=[
|
|
708
|
+
Resumes replication for the entity.
|
|
709
|
+
]=]
|
|
710
|
+
function Entity.ResumeReplication(self: Entity)
|
|
711
|
+
SetValue(self, "paused", false)
|
|
712
|
+
end
|
|
713
|
+
|
|
714
|
+
--[=[
|
|
715
|
+
Pushes a new CFrame value into the entity's snapshot.
|
|
716
|
+
|
|
717
|
+
@param time The time associated with the CFrame value.
|
|
718
|
+
@param value The CFrame value to push.
|
|
719
|
+
@param velocity Optional velocity to push with the snapshot. If not provided, will be calculated based on the latest snapshot value.
|
|
720
|
+
|
|
721
|
+
@return Whether the pushed value is the newest.
|
|
722
|
+
]=]
|
|
723
|
+
function Entity.Push(self: Entity, time: number, value: CFrame, velocity: Vector3?): boolean
|
|
724
|
+
const snapshot = self.snapshot
|
|
725
|
+
const newer = not self.latestTime or time > self.latestTime
|
|
726
|
+
if newer then
|
|
727
|
+
self.latestTime = time
|
|
728
|
+
self.latestCFrame = value
|
|
729
|
+
end
|
|
730
|
+
if snapshot then
|
|
731
|
+
const latest = snapshot:GetLatest()
|
|
732
|
+
if not IS_SERVER and newer and latest and time - latest.t < 5 and not self.isContextOwner then
|
|
733
|
+
const targetTime = Entity.GetTargetRenderTime(self)
|
|
734
|
+
if math.abs(targetTime - latest.t) > 5 then
|
|
735
|
+
snapshot:Clear()
|
|
736
|
+
Warn.low(`Clearing Snapshot due to large time difference`)
|
|
737
|
+
end
|
|
738
|
+
end
|
|
739
|
+
local tickrate = self.entityConfig.TICK_RATE
|
|
740
|
+
if self.isHalfTicked then
|
|
741
|
+
tickrate = tickrate * 2
|
|
742
|
+
end
|
|
743
|
+
snapshot:PushWithCheck(
|
|
744
|
+
time,
|
|
745
|
+
value,
|
|
746
|
+
velocity or VelocityAt(snapshot:GetLatest(), time, value, tickrate),
|
|
747
|
+
tickrate
|
|
748
|
+
)
|
|
749
|
+
end
|
|
750
|
+
FireEvent(self, "PushedSnapShot", time, value, newer)
|
|
751
|
+
return newer
|
|
752
|
+
end
|
|
753
|
+
|
|
754
|
+
--[=[
|
|
755
|
+
Gets the CFrame value at a specific time from the entity's snapshot.
|
|
756
|
+
|
|
757
|
+
@param time The time to get the CFrame value for.
|
|
758
|
+
|
|
759
|
+
@return The CFrame value at the specified time, or the latest CFrame if no snapshot exists.
|
|
760
|
+
]=]
|
|
761
|
+
function Entity.GetAt(self: Entity, time: number): CFrame?
|
|
762
|
+
const snapshot = self.snapshot
|
|
763
|
+
if snapshot then
|
|
764
|
+
return snapshot:GetAt(time)
|
|
765
|
+
else
|
|
766
|
+
return self.latestCFrame
|
|
767
|
+
end
|
|
768
|
+
end
|
|
769
|
+
|
|
770
|
+
--[=[
|
|
771
|
+
Gets the target render time from the entity's client clock.
|
|
772
|
+
|
|
773
|
+
@return The target render time.
|
|
774
|
+
]=]
|
|
775
|
+
function Entity.GetTargetRenderTime(self: Entity): number
|
|
776
|
+
local renderCache = self._clientClock
|
|
777
|
+
|
|
778
|
+
if not renderCache then
|
|
779
|
+
const RenderCaches = self.entityConfig.CLIENT_CLOCK
|
|
780
|
+
if not RenderCaches then
|
|
781
|
+
return -1
|
|
782
|
+
end
|
|
783
|
+
renderCache = self.isHalfTicked and RenderCaches.HALF or RenderCaches.NORMAL
|
|
784
|
+
end
|
|
785
|
+
if not renderCache then
|
|
786
|
+
return -1
|
|
787
|
+
end
|
|
788
|
+
return renderCache:GetTargetRenderTime()
|
|
789
|
+
end
|
|
790
|
+
|
|
791
|
+
--[=[
|
|
792
|
+
Sets whether the entity should auto update its position to the model's primary part CFrame.
|
|
793
|
+
|
|
794
|
+
@param autoUpdate Whether to auto update the entity's position.
|
|
795
|
+
]=]
|
|
796
|
+
function Entity.SetAutoUpdatePos(self: Entity, autoUpdate: boolean)
|
|
797
|
+
SetValue(self, "autoUpdatePos", autoUpdate)
|
|
798
|
+
end
|
|
799
|
+
|
|
800
|
+
--[=[
|
|
801
|
+
Gets the current CFrame of the entity.
|
|
802
|
+
|
|
803
|
+
@return The current CFrame of the entity.
|
|
804
|
+
]=]
|
|
805
|
+
function Entity.GetCFrame(self: Entity): CFrame?
|
|
806
|
+
const part = GetPart(self)
|
|
807
|
+
return self.latestCFrame or (part and part.CFrame)
|
|
808
|
+
end
|
|
809
|
+
|
|
810
|
+
--[=[
|
|
811
|
+
Sets the current CFrame of the entity and locks the snapshot to the new time.
|
|
812
|
+
|
|
813
|
+
@param cframe The CFrame to set for the entity.
|
|
814
|
+
]=]
|
|
815
|
+
function Entity.SetCFrame(self: Entity, cframe: CFrame)
|
|
816
|
+
const latestTime = (self.latestTime or 0) + 0.00002
|
|
817
|
+
if Config.FLAGS.SET_CFRAME_FIX then
|
|
818
|
+
if IS_SERVER or self.networkOwner then
|
|
819
|
+
self._teleport = os.clock()
|
|
820
|
+
end
|
|
821
|
+
if not IS_SERVER and not self.isContextOwner then
|
|
822
|
+
Entity.Clear(self)
|
|
823
|
+
end
|
|
824
|
+
end
|
|
825
|
+
if self.snapshot and Config.FLAGS.FIX_TELEPORT_JITTER then
|
|
826
|
+
self.snapshot.lockedTime = latestTime
|
|
827
|
+
end
|
|
828
|
+
Entity.Push(self, latestTime, cframe)
|
|
829
|
+
SetValue(self, "latestCFrame", cframe, true)
|
|
830
|
+
|
|
831
|
+
if self.isContextOwner or not IS_SERVER then
|
|
832
|
+
SetPartCFrame(self, cframe)
|
|
833
|
+
end
|
|
834
|
+
end
|
|
835
|
+
|
|
836
|
+
--[=[
|
|
837
|
+
Gets the primary part of the entity's model. If the model is a BasePart, returns the model itself.
|
|
838
|
+
|
|
839
|
+
@return The primary part of the entity's model, or nil if no model or primary part exists.
|
|
840
|
+
]=]
|
|
841
|
+
function Entity.GetPrimaryPart(self: Entity): BasePart?
|
|
842
|
+
if self.model then
|
|
843
|
+
return GetPart(self)
|
|
844
|
+
end
|
|
845
|
+
return nil
|
|
846
|
+
end
|
|
847
|
+
|
|
848
|
+
--[=[
|
|
849
|
+
Locks the native server CFrame replication for the entity.
|
|
850
|
+
|
|
851
|
+
Only works if the entity's model replication mode is "NATIVE".
|
|
852
|
+
|
|
853
|
+
Throws an error if called on the client or if the model replication mode is not "NATIVE".
|
|
854
|
+
]=]
|
|
855
|
+
function Entity.LockNativeServerCFrameReplication(self: Entity)
|
|
856
|
+
if IS_SERVER then
|
|
857
|
+
if self.modelReplicationMode ~= "NATIVE" then
|
|
858
|
+
error("LockNativeServerCFrameReplication can only be called on NATIVE model replication mode entities")
|
|
859
|
+
end
|
|
860
|
+
if self._lockedCFReplication then
|
|
861
|
+
return
|
|
862
|
+
end
|
|
863
|
+
SetValue(self, "_lockedCFReplication", true)
|
|
864
|
+
|
|
865
|
+
CheckNetworkOwner(self, self.networkOwner)
|
|
866
|
+
|
|
867
|
+
FireEvent(self, "LockChanged", true)
|
|
868
|
+
else
|
|
869
|
+
error("LockNativeServerCFrameReplication can only be called on the server")
|
|
870
|
+
end
|
|
871
|
+
end
|
|
872
|
+
|
|
873
|
+
--[=[
|
|
874
|
+
Unlocks the native server CFrame replication for the entity.
|
|
875
|
+
|
|
876
|
+
Only works if the entity's model replication mode is "NATIVE".
|
|
877
|
+
|
|
878
|
+
Throws an error if called on the client or if the model replication mode is not "NATIVE".
|
|
879
|
+
]=]
|
|
880
|
+
function Entity.UnlockNativeServerCFrameReplication(self: Entity)
|
|
881
|
+
if IS_SERVER then
|
|
882
|
+
if self.modelReplicationMode ~= "NATIVE" then
|
|
883
|
+
error("LockNativeServerCFrameReplication can only be called on NATIVE model replication mode entities")
|
|
884
|
+
end
|
|
885
|
+
if not self._lockedCFReplication then
|
|
886
|
+
return
|
|
887
|
+
end
|
|
888
|
+
SetValue(self, "_lockedCFReplication", false)
|
|
889
|
+
const part = GetPart(self)
|
|
890
|
+
UnlockCFReplication(part)
|
|
891
|
+
CheckNetworkOwner(self, self.networkOwner)
|
|
892
|
+
FireEvent(self, "LockChanged", false)
|
|
893
|
+
else
|
|
894
|
+
error("LockNativeServerCFrameReplication can only be called on the server")
|
|
895
|
+
end
|
|
896
|
+
end
|
|
897
|
+
|
|
898
|
+
--[=[
|
|
899
|
+
Returns the current model replication type of the entity, which can be "NATIVE", "CUSTOM", or "NATIVE_WITH_LOCK".
|
|
900
|
+
|
|
901
|
+
]=]
|
|
902
|
+
function Entity.GetModelReplicationType(self: Entity): "NATIVE" | "CUSTOM" | "NATIVE_WITH_LOCK"
|
|
903
|
+
local mode = self.modelReplicationMode
|
|
904
|
+
|
|
905
|
+
if not mode then
|
|
906
|
+
mode = self.entityConfig.MODEL_REPLICATION_MODE
|
|
907
|
+
end
|
|
908
|
+
if mode == "CUSTOM" then
|
|
909
|
+
return "CUSTOM"
|
|
910
|
+
end
|
|
911
|
+
if self._lockedCFReplication then
|
|
912
|
+
return "NATIVE_WITH_LOCK"
|
|
913
|
+
end
|
|
914
|
+
return "NATIVE"
|
|
915
|
+
end
|
|
916
|
+
|
|
917
|
+
--[=[
|
|
918
|
+
Destroys the entity, unregistering it and cleaning up resources.
|
|
919
|
+
]=]
|
|
920
|
+
function Entity.Destroy(self: Entity)
|
|
921
|
+
self.destroyed = true
|
|
922
|
+
FireEvent(self, "Destroying")
|
|
923
|
+
Holder.UnregisterEntity(self)
|
|
924
|
+
if self._clientClock then
|
|
925
|
+
self._clientClock:Destroy()
|
|
926
|
+
end
|
|
927
|
+
|
|
928
|
+
if not IS_SERVER then
|
|
929
|
+
const modeType = self.modelReplicationMode
|
|
930
|
+
const primaryPat = GetPart(self)
|
|
931
|
+
if modeType == "CUSTOM" then
|
|
932
|
+
SafeDestroy(self.model)
|
|
933
|
+
elseif primaryPat then
|
|
934
|
+
if self._lockedCFReplication then
|
|
935
|
+
UnlockCFReplication(primaryPat)
|
|
936
|
+
end
|
|
937
|
+
primaryPat.CFrame = CFrame.new(0, 1000000, 0)
|
|
938
|
+
end
|
|
939
|
+
else
|
|
940
|
+
SafeDestroy(self.model)
|
|
941
|
+
end
|
|
942
|
+
|
|
943
|
+
for eventName, signal: Types.Signal<any> in (self._events or {}) :: any do
|
|
944
|
+
signal:DisconnectAll()
|
|
945
|
+
end
|
|
946
|
+
self.model = nil
|
|
947
|
+
--//TODO: add more
|
|
948
|
+
end
|
|
949
|
+
|
|
950
|
+
--[=[
|
|
951
|
+
Gets the event signal for the specified event name.
|
|
952
|
+
|
|
953
|
+
@param eventName The name of the event to get.
|
|
954
|
+
|
|
955
|
+
@return The event signal associated with the specified event name.
|
|
956
|
+
]=]
|
|
957
|
+
Entity.GetEvent = (GetEvent :: any) :: ((
|
|
958
|
+
self: Entity,
|
|
959
|
+
eventName: "Destroying"
|
|
960
|
+
) -> Types.Event<(entity: Entity) -> (), Entity>) & ((
|
|
961
|
+
self: Entity,
|
|
962
|
+
eventName: "NetworkOwnerChanged"
|
|
963
|
+
) -> Types.Event<(entity: Entity, newOwner: Player?, prevOwner: Player?) -> (), Entity, Player?, Player?>) & ((
|
|
964
|
+
self: Entity,
|
|
965
|
+
eventName: "PushedSnapShot"
|
|
966
|
+
) -> Types.Event<
|
|
967
|
+
(entity: Entity, time: number, value: CFrame, isNewest: boolean) -> (),
|
|
968
|
+
Entity,
|
|
969
|
+
number,
|
|
970
|
+
CFrame,
|
|
971
|
+
boolean
|
|
972
|
+
>) & ((
|
|
973
|
+
self: Entity,
|
|
974
|
+
eventName: "TickChanged"
|
|
975
|
+
) -> Types.Event<(entity: Entity, newTickType: "NONE" | "HALF" | "NORMAL") -> (), Entity, string>) & ((
|
|
976
|
+
self: Entity,
|
|
977
|
+
eventName: "DataChanged"
|
|
978
|
+
) -> Types.Event<(entity: Entity, data: any) -> (), Entity, any>) & ((
|
|
979
|
+
self: Entity,
|
|
980
|
+
eventName: "Ticked"
|
|
981
|
+
) -> Types.Event<(entity: Entity, dt: number) -> (), Entity, number>) & ((
|
|
982
|
+
self: Entity,
|
|
983
|
+
eventName: "ModelChanged"
|
|
984
|
+
) -> Types.Event<
|
|
985
|
+
(entity: Entity, newModel: Model | BasePart?, oldModel: Model | BasePart?) -> (),
|
|
986
|
+
Entity,
|
|
987
|
+
Model | BasePart?,
|
|
988
|
+
Model | BasePart?
|
|
989
|
+
>) & ((
|
|
990
|
+
self: Entity,
|
|
991
|
+
eventName: "LockChanged"
|
|
992
|
+
) -> Types.Event<(entity: Entity, isLocked: boolean) -> (), Entity, boolean>)
|
|
993
|
+
|
|
994
|
+
Players.PlayerAdded:Connect(function(player)
|
|
995
|
+
clientOwned[player] = {}
|
|
996
|
+
end)
|
|
997
|
+
|
|
998
|
+
if Players.LocalPlayer then
|
|
999
|
+
clientOwned[Players.LocalPlayer] = {}
|
|
1000
|
+
end
|
|
1001
|
+
|
|
1002
|
+
Players.PlayerRemoving:Connect(function(player)
|
|
1003
|
+
clientOwned[player] = nil
|
|
1004
|
+
end)
|
|
1005
|
+
|
|
1006
|
+
Events._Signals["请不要使用_内部_设置值_拜托谢谢_嗨_这个名字有点长_好吧_再见_算了_这个确实被用了_因为递归错误_而我懒得去解决_所以这是一个能用的_创可贴式修复_好吧"].Event:Connect(
|
|
1007
|
+
SetValue
|
|
1008
|
+
)
|
|
1009
|
+
Entity._Changes = Changes
|
|
1010
|
+
Entity._GetPart = GetPart
|
|
1011
|
+
Entity._SetPartCFrame = SetPartCFrame
|
|
1012
|
+
Entity._GetRootPart = GetRootPart
|
|
1013
|
+
Entity._LockPartPhysicsReplication = LockCFReplication
|
|
1014
|
+
Entity._UnlockPartPhysicsReplication = UnlockCFReplication
|
|
1015
|
+
Entity._UpdateClockBuffer = SetClock
|
|
1016
|
+
return Entity
|