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.
Files changed (760) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/LICENSE +21 -0
  3. package/README.md +119 -0
  4. package/bin/cluau.js +4 -0
  5. package/bin/cluaupp.js +4 -0
  6. package/docs/README.md +20 -0
  7. package/docs/architecture.md +110 -0
  8. package/docs/cli.md +69 -0
  9. package/docs/comparison.md +37 -0
  10. package/docs/config.md +31 -0
  11. package/docs/cpp-advanced.md +71 -0
  12. package/docs/cpp-const.md +52 -0
  13. package/docs/cpp-organization.md +61 -0
  14. package/docs/cpp-safety.md +58 -0
  15. package/docs/cpp-types.md +66 -0
  16. package/docs/getting-started.md +169 -0
  17. package/docs/intro.md +37 -0
  18. package/docs/libraries.md +77 -0
  19. package/docs/roblox-api.md +81 -0
  20. package/docs/syntax.md +131 -0
  21. package/include/cluaupp/datatypes.hpp +581 -0
  22. package/include/cluaupp/generated/enums.hpp +4920 -0
  23. package/include/cluaupp/generated/instances.hpp +12489 -0
  24. package/include/cluaupp/libs/chrono.hpp +26 -0
  25. package/include/cluaupp/libs/cmdr.hpp +16 -0
  26. package/include/cluaupp/libs/dataservice.hpp +141 -0
  27. package/include/cluaupp/libs/display.hpp +13 -0
  28. package/include/cluaupp/libs/ezvisual.hpp +18 -0
  29. package/include/cluaupp/libs/formatnumber.hpp +15 -0
  30. package/include/cluaupp/libs/fusion.hpp +41 -0
  31. package/include/cluaupp/libs/iris.hpp +40 -0
  32. package/include/cluaupp/libs/janitor.hpp +35 -0
  33. package/include/cluaupp/libs/math.hpp +14 -0
  34. package/include/cluaupp/libs/module3d.hpp +25 -0
  35. package/include/cluaupp/libs/net.hpp +42 -0
  36. package/include/cluaupp/libs/promise.hpp +30 -0
  37. package/include/cluaupp/libs/spring.hpp +18 -0
  38. package/include/cluaupp/libs/statemachine.hpp +19 -0
  39. package/include/cluaupp/libs/stickybillboard.hpp +14 -0
  40. package/include/cluaupp/libs/topbarplus.hpp +29 -0
  41. package/include/cluaupp/libs/twinkle.hpp +15 -0
  42. package/include/cluaupp/libs/vfx.hpp +13 -0
  43. package/include/cluaupp/libs.hpp +25 -0
  44. package/include/cluaupp/roblox.hpp +28 -0
  45. package/package.json +65 -0
  46. package/runtime/ArrayIndexer/init.luau +144 -0
  47. package/runtime/Chrono/Client/ClientClock.luau +202 -0
  48. package/runtime/Chrono/Client/InterpolationBuffer.luau +74 -0
  49. package/runtime/Chrono/Client/ModelResolver.luau +53 -0
  50. package/runtime/Chrono/Client/Player.luau +113 -0
  51. package/runtime/Chrono/Client/Receiver.luau +395 -0
  52. package/runtime/Chrono/Client/Replicate.luau +333 -0
  53. package/runtime/Chrono/Client/Sender.luau +205 -0
  54. package/runtime/Chrono/LICENSE +21 -0
  55. package/runtime/Chrono/Server/EntityGrid.luau +299 -0
  56. package/runtime/Chrono/Server/Player.luau +141 -0
  57. package/runtime/Chrono/Server/Receiver.luau +287 -0
  58. package/runtime/Chrono/Server/Replicate.luau +415 -0
  59. package/runtime/Chrono/Server/Sender.luau +306 -0
  60. package/runtime/Chrono/Server/ServerClock.luau +50 -0
  61. package/runtime/Chrono/Shared/ApplyMounts.luau +137 -0
  62. package/runtime/Chrono/Shared/Bin.luau +31 -0
  63. package/runtime/Chrono/Shared/ClockUnwrap.luau +70 -0
  64. package/runtime/Chrono/Shared/Config.luau +264 -0
  65. package/runtime/Chrono/Shared/Entity.luau +1016 -0
  66. package/runtime/Chrono/Shared/Events.luau +39 -0
  67. package/runtime/Chrono/Shared/Holder.luau +210 -0
  68. package/runtime/Chrono/Shared/InterpolationMath.luau +51 -0
  69. package/runtime/Chrono/Shared/ModelHelper.luau +122 -0
  70. package/runtime/Chrono/Shared/Remotes/ClientClockRelay.model.json +3 -0
  71. package/runtime/Chrono/Shared/Remotes/ClientHeartbeat.model.json +3 -0
  72. package/runtime/Chrono/Shared/Remotes/ClientLoaded.model.json +3 -0
  73. package/runtime/Chrono/Shared/Remotes/Death.model.json +3 -0
  74. package/runtime/Chrono/Shared/Remotes/Heartbeat.model.json +3 -0
  75. package/runtime/Chrono/Shared/Remotes/Replicate.model.json +3 -0
  76. package/runtime/Chrono/Shared/Remotes/ReplicateFull.model.json +3 -0
  77. package/runtime/Chrono/Shared/Remotes/SafeReplicate.model.json +3 -0
  78. package/runtime/Chrono/Shared/ReplicationRules.luau +122 -0
  79. package/runtime/Chrono/Shared/Signal.luau +219 -0
  80. package/runtime/Chrono/Shared/Snapshots.luau +218 -0
  81. package/runtime/Chrono/Shared/Stats.luau +204 -0
  82. package/runtime/Chrono/Shared/Ticker.luau +112 -0
  83. package/runtime/Chrono/Shared/Types.luau +247 -0
  84. package/runtime/Chrono/Shared/Warn.luau +33 -0
  85. package/runtime/Chrono/Shared/_CUSTOM_MODEL_REP/init.model.json +3 -0
  86. package/runtime/Chrono/_impl/Client/ClientClock.luau +202 -0
  87. package/runtime/Chrono/_impl/Client/InterpolationBuffer.luau +74 -0
  88. package/runtime/Chrono/_impl/Client/ModelResolver.luau +53 -0
  89. package/runtime/Chrono/_impl/Client/Player.luau +113 -0
  90. package/runtime/Chrono/_impl/Client/Receiver.luau +395 -0
  91. package/runtime/Chrono/_impl/Client/Replicate.luau +333 -0
  92. package/runtime/Chrono/_impl/Client/Sender.luau +205 -0
  93. package/runtime/Chrono/_impl/LICENSE +21 -0
  94. package/runtime/Chrono/_impl/Server/EntityGrid.luau +299 -0
  95. package/runtime/Chrono/_impl/Server/Player.luau +141 -0
  96. package/runtime/Chrono/_impl/Server/Receiver.luau +287 -0
  97. package/runtime/Chrono/_impl/Server/Replicate.luau +415 -0
  98. package/runtime/Chrono/_impl/Server/Sender.luau +306 -0
  99. package/runtime/Chrono/_impl/Server/ServerClock.luau +50 -0
  100. package/runtime/Chrono/_impl/Shared/ApplyMounts.luau +137 -0
  101. package/runtime/Chrono/_impl/Shared/Bin.luau +31 -0
  102. package/runtime/Chrono/_impl/Shared/ClockUnwrap.luau +70 -0
  103. package/runtime/Chrono/_impl/Shared/Config.luau +264 -0
  104. package/runtime/Chrono/_impl/Shared/Entity.luau +1016 -0
  105. package/runtime/Chrono/_impl/Shared/Events.luau +39 -0
  106. package/runtime/Chrono/_impl/Shared/Holder.luau +210 -0
  107. package/runtime/Chrono/_impl/Shared/InterpolationMath.luau +51 -0
  108. package/runtime/Chrono/_impl/Shared/ModelHelper.luau +122 -0
  109. package/runtime/Chrono/_impl/Shared/Remotes/ClientClockRelay.model.json +3 -0
  110. package/runtime/Chrono/_impl/Shared/Remotes/ClientHeartbeat.model.json +3 -0
  111. package/runtime/Chrono/_impl/Shared/Remotes/ClientLoaded.model.json +3 -0
  112. package/runtime/Chrono/_impl/Shared/Remotes/Death.model.json +3 -0
  113. package/runtime/Chrono/_impl/Shared/Remotes/Heartbeat.model.json +3 -0
  114. package/runtime/Chrono/_impl/Shared/Remotes/Replicate.model.json +3 -0
  115. package/runtime/Chrono/_impl/Shared/Remotes/ReplicateFull.model.json +3 -0
  116. package/runtime/Chrono/_impl/Shared/Remotes/SafeReplicate.model.json +3 -0
  117. package/runtime/Chrono/_impl/Shared/ReplicationRules.luau +122 -0
  118. package/runtime/Chrono/_impl/Shared/Signal.luau +219 -0
  119. package/runtime/Chrono/_impl/Shared/Snapshots.luau +218 -0
  120. package/runtime/Chrono/_impl/Shared/Stats.luau +204 -0
  121. package/runtime/Chrono/_impl/Shared/Ticker.luau +112 -0
  122. package/runtime/Chrono/_impl/Shared/Types.luau +247 -0
  123. package/runtime/Chrono/_impl/Shared/Warn.luau +33 -0
  124. package/runtime/Chrono/_impl/Shared/_CUSTOM_MODEL_REP/init.model.json +3 -0
  125. package/runtime/Chrono/_impl/init.luau +96 -0
  126. package/runtime/Chrono/init.luau +14 -0
  127. package/runtime/Cmdr/BuiltInCommands/Admin/announce.luau +21 -0
  128. package/runtime/Cmdr/BuiltInCommands/Admin/announceServer.luau +17 -0
  129. package/runtime/Cmdr/BuiltInCommands/Admin/ban.luau +59 -0
  130. package/runtime/Cmdr/BuiltInCommands/Admin/banServer.luau +30 -0
  131. package/runtime/Cmdr/BuiltInCommands/Admin/gotoPlace.luau +35 -0
  132. package/runtime/Cmdr/BuiltInCommands/Admin/gotoPlaceServer.luau +17 -0
  133. package/runtime/Cmdr/BuiltInCommands/Admin/kick.luau +19 -0
  134. package/runtime/Cmdr/BuiltInCommands/Admin/kickServer.luau +27 -0
  135. package/runtime/Cmdr/BuiltInCommands/Admin/kill.luau +13 -0
  136. package/runtime/Cmdr/BuiltInCommands/Admin/killServer.luau +13 -0
  137. package/runtime/Cmdr/BuiltInCommands/Admin/respawn.luau +15 -0
  138. package/runtime/Cmdr/BuiltInCommands/Admin/respawnServer.luau +7 -0
  139. package/runtime/Cmdr/BuiltInCommands/Admin/teleport.luau +30 -0
  140. package/runtime/Cmdr/BuiltInCommands/Admin/teleportServer.luau +26 -0
  141. package/runtime/Cmdr/BuiltInCommands/Admin/unban.luau +26 -0
  142. package/runtime/Cmdr/BuiltInCommands/Admin/unbanServer.luau +10 -0
  143. package/runtime/Cmdr/BuiltInCommands/Debug/blink.luau +35 -0
  144. package/runtime/Cmdr/BuiltInCommands/Debug/fetch.luau +12 -0
  145. package/runtime/Cmdr/BuiltInCommands/Debug/fetchServer.luau +7 -0
  146. package/runtime/Cmdr/BuiltInCommands/Debug/getPlayerPlaceInstance.luau +20 -0
  147. package/runtime/Cmdr/BuiltInCommands/Debug/getPlayerPlaceInstanceServer.luau +28 -0
  148. package/runtime/Cmdr/BuiltInCommands/Debug/position.luau +30 -0
  149. package/runtime/Cmdr/BuiltInCommands/Debug/thru.luau +50 -0
  150. package/runtime/Cmdr/BuiltInCommands/Debug/uptime.luau +6 -0
  151. package/runtime/Cmdr/BuiltInCommands/Debug/uptimeServer.luau +12 -0
  152. package/runtime/Cmdr/BuiltInCommands/Debug/version.luau +12 -0
  153. package/runtime/Cmdr/BuiltInCommands/Utility/alias.luau +22 -0
  154. package/runtime/Cmdr/BuiltInCommands/Utility/bind.luau +104 -0
  155. package/runtime/Cmdr/BuiltInCommands/Utility/clear.luau +20 -0
  156. package/runtime/Cmdr/BuiltInCommands/Utility/convertTimestamp.luau +18 -0
  157. package/runtime/Cmdr/BuiltInCommands/Utility/echo.luau +17 -0
  158. package/runtime/Cmdr/BuiltInCommands/Utility/edit.luau +75 -0
  159. package/runtime/Cmdr/BuiltInCommands/Utility/exit.luau +11 -0
  160. package/runtime/Cmdr/BuiltInCommands/Utility/history.luau +27 -0
  161. package/runtime/Cmdr/BuiltInCommands/Utility/hover.luau +21 -0
  162. package/runtime/Cmdr/BuiltInCommands/Utility/jsonArrayDecode.luau +25 -0
  163. package/runtime/Cmdr/BuiltInCommands/Utility/jsonArrayEncode.luau +18 -0
  164. package/runtime/Cmdr/BuiltInCommands/Utility/len.luau +16 -0
  165. package/runtime/Cmdr/BuiltInCommands/Utility/math.luau +36 -0
  166. package/runtime/Cmdr/BuiltInCommands/Utility/pick.luau +21 -0
  167. package/runtime/Cmdr/BuiltInCommands/Utility/rand.luau +27 -0
  168. package/runtime/Cmdr/BuiltInCommands/Utility/replace.luau +32 -0
  169. package/runtime/Cmdr/BuiltInCommands/Utility/resolve.luau +32 -0
  170. package/runtime/Cmdr/BuiltInCommands/Utility/run.luau +20 -0
  171. package/runtime/Cmdr/BuiltInCommands/Utility/runLines.luau +34 -0
  172. package/runtime/Cmdr/BuiltInCommands/Utility/runif.luau +95 -0
  173. package/runtime/Cmdr/BuiltInCommands/Utility/unbind.luau +27 -0
  174. package/runtime/Cmdr/BuiltInCommands/Utility/var.luau +29 -0
  175. package/runtime/Cmdr/BuiltInCommands/Utility/varServer.luau +37 -0
  176. package/runtime/Cmdr/BuiltInCommands/Utility/varSet.luau +30 -0
  177. package/runtime/Cmdr/BuiltInCommands/Utility/varSetServer.luau +29 -0
  178. package/runtime/Cmdr/BuiltInCommands/help.luau +96 -0
  179. package/runtime/Cmdr/BuiltInTypes/BrickColor.luau +258 -0
  180. package/runtime/Cmdr/BuiltInTypes/Color3.luau +59 -0
  181. package/runtime/Cmdr/BuiltInTypes/Command.luau +23 -0
  182. package/runtime/Cmdr/BuiltInTypes/Duration.luau +111 -0
  183. package/runtime/Cmdr/BuiltInTypes/JSON.luau +13 -0
  184. package/runtime/Cmdr/BuiltInTypes/MathOperator.luau +43 -0
  185. package/runtime/Cmdr/BuiltInTypes/Player.luau +36 -0
  186. package/runtime/Cmdr/BuiltInTypes/PlayerId.luau +66 -0
  187. package/runtime/Cmdr/BuiltInTypes/Primitives.luau +145 -0
  188. package/runtime/Cmdr/BuiltInTypes/StoredKey.luau +33 -0
  189. package/runtime/Cmdr/BuiltInTypes/Team.luau +49 -0
  190. package/runtime/Cmdr/BuiltInTypes/Type.luau +23 -0
  191. package/runtime/Cmdr/BuiltInTypes/URL.luau +18 -0
  192. package/runtime/Cmdr/BuiltInTypes/UserInput.luau +32 -0
  193. package/runtime/Cmdr/BuiltInTypes/Vector.luau +58 -0
  194. package/runtime/Cmdr/CmdrClient/CmdrInterface/AutoComplete.luau +240 -0
  195. package/runtime/Cmdr/CmdrClient/CmdrInterface/CreateGui.luau +227 -0
  196. package/runtime/Cmdr/CmdrClient/CmdrInterface/Window.luau +713 -0
  197. package/runtime/Cmdr/CmdrClient/CmdrInterface/init.luau +18 -0
  198. package/runtime/Cmdr/CmdrClient/DefaultEventHandlers.luau +18 -0
  199. package/runtime/Cmdr/CmdrClient/Shared/Argument.luau +395 -0
  200. package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/HasCharacter.luau +39 -0
  201. package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/IsDataStoreAvailable.luau +36 -0
  202. package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/MaxArrayLength.luau +10 -0
  203. package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/MaxStringLength.luau +10 -0
  204. package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/NonEmptyString.luau +10 -0
  205. package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/NotEquals.luau +8 -0
  206. package/runtime/Cmdr/CmdrClient/Shared/Command.luau +415 -0
  207. package/runtime/Cmdr/CmdrClient/Shared/Dispatcher.luau +407 -0
  208. package/runtime/Cmdr/CmdrClient/Shared/Registry.luau +717 -0
  209. package/runtime/Cmdr/CmdrClient/Shared/Util.luau +879 -0
  210. package/runtime/Cmdr/CmdrClient/init.luau +377 -0
  211. package/runtime/Cmdr/LICENSE +21 -0
  212. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/announce.luau +21 -0
  213. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/announceServer.luau +17 -0
  214. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/ban.luau +59 -0
  215. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/banServer.luau +30 -0
  216. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/gotoPlace.luau +35 -0
  217. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/gotoPlaceServer.luau +17 -0
  218. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/kick.luau +19 -0
  219. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/kickServer.luau +27 -0
  220. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/kill.luau +13 -0
  221. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/killServer.luau +13 -0
  222. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/respawn.luau +15 -0
  223. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/respawnServer.luau +7 -0
  224. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/teleport.luau +30 -0
  225. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/teleportServer.luau +26 -0
  226. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/unban.luau +26 -0
  227. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/unbanServer.luau +10 -0
  228. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/blink.luau +35 -0
  229. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/fetch.luau +12 -0
  230. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/fetchServer.luau +7 -0
  231. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/getPlayerPlaceInstance.luau +20 -0
  232. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/getPlayerPlaceInstanceServer.luau +28 -0
  233. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/position.luau +30 -0
  234. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/thru.luau +50 -0
  235. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/uptime.luau +6 -0
  236. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/uptimeServer.luau +12 -0
  237. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/version.luau +12 -0
  238. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/alias.luau +22 -0
  239. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/bind.luau +104 -0
  240. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/clear.luau +20 -0
  241. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/convertTimestamp.luau +18 -0
  242. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/echo.luau +17 -0
  243. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/edit.luau +75 -0
  244. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/exit.luau +11 -0
  245. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/history.luau +27 -0
  246. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/hover.luau +21 -0
  247. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/jsonArrayDecode.luau +25 -0
  248. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/jsonArrayEncode.luau +18 -0
  249. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/len.luau +16 -0
  250. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/math.luau +36 -0
  251. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/pick.luau +21 -0
  252. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/rand.luau +27 -0
  253. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/replace.luau +32 -0
  254. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/resolve.luau +32 -0
  255. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/run.luau +20 -0
  256. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/runLines.luau +34 -0
  257. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/runif.luau +95 -0
  258. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/unbind.luau +27 -0
  259. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/var.luau +29 -0
  260. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/varServer.luau +37 -0
  261. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/varSet.luau +30 -0
  262. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/varSetServer.luau +29 -0
  263. package/runtime/Cmdr/_impl/BuiltInCommands/help.luau +96 -0
  264. package/runtime/Cmdr/_impl/BuiltInTypes/BrickColor.luau +258 -0
  265. package/runtime/Cmdr/_impl/BuiltInTypes/Color3.luau +59 -0
  266. package/runtime/Cmdr/_impl/BuiltInTypes/Command.luau +23 -0
  267. package/runtime/Cmdr/_impl/BuiltInTypes/Duration.luau +111 -0
  268. package/runtime/Cmdr/_impl/BuiltInTypes/JSON.luau +13 -0
  269. package/runtime/Cmdr/_impl/BuiltInTypes/MathOperator.luau +43 -0
  270. package/runtime/Cmdr/_impl/BuiltInTypes/Player.luau +36 -0
  271. package/runtime/Cmdr/_impl/BuiltInTypes/PlayerId.luau +66 -0
  272. package/runtime/Cmdr/_impl/BuiltInTypes/Primitives.luau +145 -0
  273. package/runtime/Cmdr/_impl/BuiltInTypes/StoredKey.luau +33 -0
  274. package/runtime/Cmdr/_impl/BuiltInTypes/Team.luau +49 -0
  275. package/runtime/Cmdr/_impl/BuiltInTypes/Type.luau +23 -0
  276. package/runtime/Cmdr/_impl/BuiltInTypes/URL.luau +18 -0
  277. package/runtime/Cmdr/_impl/BuiltInTypes/UserInput.luau +32 -0
  278. package/runtime/Cmdr/_impl/BuiltInTypes/Vector.luau +58 -0
  279. package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/AutoComplete.luau +240 -0
  280. package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/CreateGui.luau +227 -0
  281. package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/Window.luau +713 -0
  282. package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/init.luau +18 -0
  283. package/runtime/Cmdr/_impl/CmdrClient/DefaultEventHandlers.luau +18 -0
  284. package/runtime/Cmdr/_impl/CmdrClient/Shared/Argument.luau +395 -0
  285. package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/HasCharacter.luau +39 -0
  286. package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/IsDataStoreAvailable.luau +36 -0
  287. package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/MaxArrayLength.luau +10 -0
  288. package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/MaxStringLength.luau +10 -0
  289. package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/NonEmptyString.luau +10 -0
  290. package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/NotEquals.luau +8 -0
  291. package/runtime/Cmdr/_impl/CmdrClient/Shared/Command.luau +415 -0
  292. package/runtime/Cmdr/_impl/CmdrClient/Shared/Dispatcher.luau +407 -0
  293. package/runtime/Cmdr/_impl/CmdrClient/Shared/Registry.luau +717 -0
  294. package/runtime/Cmdr/_impl/CmdrClient/Shared/Util.luau +879 -0
  295. package/runtime/Cmdr/_impl/CmdrClient/init.luau +377 -0
  296. package/runtime/Cmdr/_impl/LICENSE +21 -0
  297. package/runtime/Cmdr/_impl/init.luau +178 -0
  298. package/runtime/Cmdr/init.luau +8 -0
  299. package/runtime/DataService/Client.luau +209 -0
  300. package/runtime/DataService/Data.luau +886 -0
  301. package/runtime/DataService/Enum.luau +6 -0
  302. package/runtime/DataService/Enums.luau +10 -0
  303. package/runtime/DataService/Packages/quicknet/DataTypes.luau +70 -0
  304. package/runtime/DataService/Packages/quicknet/Enums.luau +85 -0
  305. package/runtime/DataService/Packages/quicknet/EnumsToNativeTypes.luau +57 -0
  306. package/runtime/DataService/Packages/quicknet/Parser.luau +355 -0
  307. package/runtime/DataService/Packages/quicknet/QuickNet.luau +953 -0
  308. package/runtime/DataService/Packages/quicknet/Serialize.luau +2020 -0
  309. package/runtime/DataService/Packages/quicknet/Types.luau +72 -0
  310. package/runtime/DataService/Packages/quicknet/init.luau +1 -0
  311. package/runtime/DataService/Packages/signal/init.luau +433 -0
  312. package/runtime/DataService/Path.luau +236 -0
  313. package/runtime/DataService/ProfileStore.luau +2243 -0
  314. package/runtime/DataService/Replicator.luau +172 -0
  315. package/runtime/DataService/Server.luau +412 -0
  316. package/runtime/DataService/init.luau +204 -0
  317. package/runtime/Display/LICENSE +201 -0
  318. package/runtime/Display/_impl/LICENSE +201 -0
  319. package/runtime/Display/_impl/init.luau +269 -0
  320. package/runtime/Display/_impl/option.luau +237 -0
  321. package/runtime/Display/init.luau +10 -0
  322. package/runtime/Display/option.luau +237 -0
  323. package/runtime/EzVisualz/Dropshadow.luau +148 -0
  324. package/runtime/EzVisualz/Gradient.luau +452 -0
  325. package/runtime/EzVisualz/GradientTemplates/Bubblegum.luau +16 -0
  326. package/runtime/EzVisualz/GradientTemplates/Chrome.luau +16 -0
  327. package/runtime/EzVisualz/GradientTemplates/Death.luau +15 -0
  328. package/runtime/EzVisualz/GradientTemplates/Electric.luau +14 -0
  329. package/runtime/EzVisualz/GradientTemplates/Fire.luau +13 -0
  330. package/runtime/EzVisualz/GradientTemplates/Galaxy.luau +11 -0
  331. package/runtime/EzVisualz/GradientTemplates/Ghost.luau +16 -0
  332. package/runtime/EzVisualz/GradientTemplates/Gold.luau +14 -0
  333. package/runtime/EzVisualz/GradientTemplates/Green.luau +14 -0
  334. package/runtime/EzVisualz/GradientTemplates/Ice.luau +14 -0
  335. package/runtime/EzVisualz/GradientTemplates/Lava.luau +15 -0
  336. package/runtime/EzVisualz/GradientTemplates/Matrix.luau +19 -0
  337. package/runtime/EzVisualz/GradientTemplates/Neon.luau +12 -0
  338. package/runtime/EzVisualz/GradientTemplates/Oceanic.luau +15 -0
  339. package/runtime/EzVisualz/GradientTemplates/Rainbow.luau +13 -0
  340. package/runtime/EzVisualz/GradientTemplates/Silver.luau +12 -0
  341. package/runtime/EzVisualz/GradientTemplates/Sunset.luau +11 -0
  342. package/runtime/EzVisualz/GradientTemplates/Zebra.luau +18 -0
  343. package/runtime/EzVisualz/GradientTemplates/init.luau +9 -0
  344. package/runtime/EzVisualz/LICENSE.md +21 -0
  345. package/runtime/EzVisualz/Presets/Bubblegum.luau +36 -0
  346. package/runtime/EzVisualz/Presets/ChromeStroke.luau +15 -0
  347. package/runtime/EzVisualz/Presets/DeathStroke.luau +15 -0
  348. package/runtime/EzVisualz/Presets/ElectricStroke.luau +54 -0
  349. package/runtime/EzVisualz/Presets/FireStroke.luau +29 -0
  350. package/runtime/EzVisualz/Presets/GalaxyStroke.luau +31 -0
  351. package/runtime/EzVisualz/Presets/Ghost.luau +10 -0
  352. package/runtime/EzVisualz/Presets/GhostStroke.luau +15 -0
  353. package/runtime/EzVisualz/Presets/Gold.luau +10 -0
  354. package/runtime/EzVisualz/Presets/GoldStroke.luau +15 -0
  355. package/runtime/EzVisualz/Presets/GreenOutline.luau +23 -0
  356. package/runtime/EzVisualz/Presets/IceStroke.luau +15 -0
  357. package/runtime/EzVisualz/Presets/Lava.luau +9 -0
  358. package/runtime/EzVisualz/Presets/LavaStroke.luau +13 -0
  359. package/runtime/EzVisualz/Presets/Matrix.luau +21 -0
  360. package/runtime/EzVisualz/Presets/NeonStroke.luau +30 -0
  361. package/runtime/EzVisualz/Presets/OceanicStroke.luau +15 -0
  362. package/runtime/EzVisualz/Presets/Rainbow.luau +9 -0
  363. package/runtime/EzVisualz/Presets/RainbowOutline.luau +23 -0
  364. package/runtime/EzVisualz/Presets/RainbowStroke.luau +13 -0
  365. package/runtime/EzVisualz/Presets/Shine.luau +48 -0
  366. package/runtime/EzVisualz/Presets/ShineOutline.luau +66 -0
  367. package/runtime/EzVisualz/Presets/Silver.luau +10 -0
  368. package/runtime/EzVisualz/Presets/SilverStroke.luau +15 -0
  369. package/runtime/EzVisualz/Presets/SunsetStroke.luau +31 -0
  370. package/runtime/EzVisualz/Presets/WaveStroke.luau +33 -0
  371. package/runtime/EzVisualz/Presets/Zebra.luau +21 -0
  372. package/runtime/EzVisualz/Presets/init.luau +9 -0
  373. package/runtime/EzVisualz/Stroke.luau +167 -0
  374. package/runtime/EzVisualz/Util.luau +7 -0
  375. package/runtime/EzVisualz/_impl/Dropshadow.luau +148 -0
  376. package/runtime/EzVisualz/_impl/Gradient.luau +452 -0
  377. package/runtime/EzVisualz/_impl/GradientTemplates/Bubblegum.luau +16 -0
  378. package/runtime/EzVisualz/_impl/GradientTemplates/Chrome.luau +16 -0
  379. package/runtime/EzVisualz/_impl/GradientTemplates/Death.luau +15 -0
  380. package/runtime/EzVisualz/_impl/GradientTemplates/Electric.luau +14 -0
  381. package/runtime/EzVisualz/_impl/GradientTemplates/Fire.luau +13 -0
  382. package/runtime/EzVisualz/_impl/GradientTemplates/Galaxy.luau +11 -0
  383. package/runtime/EzVisualz/_impl/GradientTemplates/Ghost.luau +16 -0
  384. package/runtime/EzVisualz/_impl/GradientTemplates/Gold.luau +14 -0
  385. package/runtime/EzVisualz/_impl/GradientTemplates/Green.luau +14 -0
  386. package/runtime/EzVisualz/_impl/GradientTemplates/Ice.luau +14 -0
  387. package/runtime/EzVisualz/_impl/GradientTemplates/Lava.luau +15 -0
  388. package/runtime/EzVisualz/_impl/GradientTemplates/Matrix.luau +19 -0
  389. package/runtime/EzVisualz/_impl/GradientTemplates/Neon.luau +12 -0
  390. package/runtime/EzVisualz/_impl/GradientTemplates/Oceanic.luau +15 -0
  391. package/runtime/EzVisualz/_impl/GradientTemplates/Rainbow.luau +13 -0
  392. package/runtime/EzVisualz/_impl/GradientTemplates/Silver.luau +12 -0
  393. package/runtime/EzVisualz/_impl/GradientTemplates/Sunset.luau +11 -0
  394. package/runtime/EzVisualz/_impl/GradientTemplates/Zebra.luau +18 -0
  395. package/runtime/EzVisualz/_impl/GradientTemplates/init.luau +9 -0
  396. package/runtime/EzVisualz/_impl/LICENSE.md +21 -0
  397. package/runtime/EzVisualz/_impl/Presets/Bubblegum.luau +36 -0
  398. package/runtime/EzVisualz/_impl/Presets/ChromeStroke.luau +15 -0
  399. package/runtime/EzVisualz/_impl/Presets/DeathStroke.luau +15 -0
  400. package/runtime/EzVisualz/_impl/Presets/ElectricStroke.luau +54 -0
  401. package/runtime/EzVisualz/_impl/Presets/FireStroke.luau +29 -0
  402. package/runtime/EzVisualz/_impl/Presets/GalaxyStroke.luau +31 -0
  403. package/runtime/EzVisualz/_impl/Presets/Ghost.luau +10 -0
  404. package/runtime/EzVisualz/_impl/Presets/GhostStroke.luau +15 -0
  405. package/runtime/EzVisualz/_impl/Presets/Gold.luau +10 -0
  406. package/runtime/EzVisualz/_impl/Presets/GoldStroke.luau +15 -0
  407. package/runtime/EzVisualz/_impl/Presets/GreenOutline.luau +23 -0
  408. package/runtime/EzVisualz/_impl/Presets/IceStroke.luau +15 -0
  409. package/runtime/EzVisualz/_impl/Presets/Lava.luau +9 -0
  410. package/runtime/EzVisualz/_impl/Presets/LavaStroke.luau +13 -0
  411. package/runtime/EzVisualz/_impl/Presets/Matrix.luau +21 -0
  412. package/runtime/EzVisualz/_impl/Presets/NeonStroke.luau +30 -0
  413. package/runtime/EzVisualz/_impl/Presets/OceanicStroke.luau +15 -0
  414. package/runtime/EzVisualz/_impl/Presets/Rainbow.luau +9 -0
  415. package/runtime/EzVisualz/_impl/Presets/RainbowOutline.luau +23 -0
  416. package/runtime/EzVisualz/_impl/Presets/RainbowStroke.luau +13 -0
  417. package/runtime/EzVisualz/_impl/Presets/Shine.luau +48 -0
  418. package/runtime/EzVisualz/_impl/Presets/ShineOutline.luau +66 -0
  419. package/runtime/EzVisualz/_impl/Presets/Silver.luau +10 -0
  420. package/runtime/EzVisualz/_impl/Presets/SilverStroke.luau +15 -0
  421. package/runtime/EzVisualz/_impl/Presets/SunsetStroke.luau +31 -0
  422. package/runtime/EzVisualz/_impl/Presets/WaveStroke.luau +33 -0
  423. package/runtime/EzVisualz/_impl/Presets/Zebra.luau +21 -0
  424. package/runtime/EzVisualz/_impl/Presets/init.luau +9 -0
  425. package/runtime/EzVisualz/_impl/Stroke.luau +167 -0
  426. package/runtime/EzVisualz/_impl/Util.luau +7 -0
  427. package/runtime/EzVisualz/_impl/init.luau +319 -0
  428. package/runtime/EzVisualz/_impl/wally.lock +8 -0
  429. package/runtime/EzVisualz/_impl/wally.toml +8 -0
  430. package/runtime/EzVisualz/init.luau +9 -0
  431. package/runtime/EzVisualz/wally.lock +8 -0
  432. package/runtime/EzVisualz/wally.toml +8 -0
  433. package/runtime/FormatNumber/LICENSE.md +25 -0
  434. package/runtime/FormatNumber/Main/DecimalFormatSymbols.lua +43 -0
  435. package/runtime/FormatNumber/Main/IntegerWidth.lua +41 -0
  436. package/runtime/FormatNumber/Main/Notation.lua +116 -0
  437. package/runtime/FormatNumber/Main/Precision.lua +179 -0
  438. package/runtime/FormatNumber/Main/init.lua +199 -0
  439. package/runtime/FormatNumber/Simple/init.lua +76 -0
  440. package/runtime/FormatNumber/Version.lua +82 -0
  441. package/runtime/FormatNumber/_impl/LICENSE.md +25 -0
  442. package/runtime/FormatNumber/_impl/Main/DecimalFormatSymbols.lua +43 -0
  443. package/runtime/FormatNumber/_impl/Main/IntegerWidth.lua +41 -0
  444. package/runtime/FormatNumber/_impl/Main/Notation.lua +116 -0
  445. package/runtime/FormatNumber/_impl/Main/Precision.lua +179 -0
  446. package/runtime/FormatNumber/_impl/Main/init.lua +199 -0
  447. package/runtime/FormatNumber/_impl/Simple/init.lua +76 -0
  448. package/runtime/FormatNumber/_impl/Version.lua +82 -0
  449. package/runtime/FormatNumber/_impl/_internal/class.lua +204 -0
  450. package/runtime/FormatNumber/_impl/_internal/decimal_conversion.lua +30 -0
  451. package/runtime/FormatNumber/_impl/_internal/enums.lua +55 -0
  452. package/runtime/FormatNumber/_impl/_internal/format.lua +342 -0
  453. package/runtime/FormatNumber/_impl/_internal/formatter_settings.lua +160 -0
  454. package/runtime/FormatNumber/_impl/_internal/init.lua +8 -0
  455. package/runtime/FormatNumber/_impl/_internal/skeleton.lua +541 -0
  456. package/runtime/FormatNumber/_impl/init.lua +20 -0
  457. package/runtime/FormatNumber/_internal/class.lua +204 -0
  458. package/runtime/FormatNumber/_internal/decimal_conversion.lua +30 -0
  459. package/runtime/FormatNumber/_internal/enums.lua +55 -0
  460. package/runtime/FormatNumber/_internal/format.lua +342 -0
  461. package/runtime/FormatNumber/_internal/formatter_settings.lua +160 -0
  462. package/runtime/FormatNumber/_internal/init.lua +8 -0
  463. package/runtime/FormatNumber/_internal/skeleton.lua +541 -0
  464. package/runtime/FormatNumber/init.lua +20 -0
  465. package/runtime/FormatNumber/init.luau +20 -0
  466. package/runtime/Fusion/Animation/ExternalTime.luau +84 -0
  467. package/runtime/Fusion/Animation/Spring.luau +313 -0
  468. package/runtime/Fusion/Animation/Stopwatch.luau +128 -0
  469. package/runtime/Fusion/Animation/Tween.luau +178 -0
  470. package/runtime/Fusion/Animation/getTweenDuration.luau +27 -0
  471. package/runtime/Fusion/Animation/getTweenRatio.luau +47 -0
  472. package/runtime/Fusion/Animation/lerpType.luau +164 -0
  473. package/runtime/Fusion/Animation/packType.luau +100 -0
  474. package/runtime/Fusion/Animation/springCoefficients.luau +80 -0
  475. package/runtime/Fusion/Animation/unpackType.luau +103 -0
  476. package/runtime/Fusion/Colour/Oklab.luau +70 -0
  477. package/runtime/Fusion/Colour/sRGB.luau +47 -0
  478. package/runtime/Fusion/External.luau +156 -0
  479. package/runtime/Fusion/ExternalDebug.luau +70 -0
  480. package/runtime/Fusion/Graph/Observer.luau +111 -0
  481. package/runtime/Fusion/Graph/castToGraph.luau +29 -0
  482. package/runtime/Fusion/Graph/change.luau +81 -0
  483. package/runtime/Fusion/Graph/depend.luau +33 -0
  484. package/runtime/Fusion/Graph/evaluate.luau +56 -0
  485. package/runtime/Fusion/Instances/Attribute.luau +58 -0
  486. package/runtime/Fusion/Instances/AttributeChange.luau +47 -0
  487. package/runtime/Fusion/Instances/AttributeOut.luau +63 -0
  488. package/runtime/Fusion/Instances/Child.luau +21 -0
  489. package/runtime/Fusion/Instances/Children.luau +148 -0
  490. package/runtime/Fusion/Instances/Hydrate.luau +29 -0
  491. package/runtime/Fusion/Instances/New.luau +48 -0
  492. package/runtime/Fusion/Instances/OnChange.luau +50 -0
  493. package/runtime/Fusion/Instances/OnEvent.luau +54 -0
  494. package/runtime/Fusion/Instances/Out.luau +69 -0
  495. package/runtime/Fusion/Instances/Tag.luau +61 -0
  496. package/runtime/Fusion/Instances/applyInstanceProps.luau +149 -0
  497. package/runtime/Fusion/Instances/defaultProps.luau +194 -0
  498. package/runtime/Fusion/LICENSE +21 -0
  499. package/runtime/Fusion/Logging/formatError.luau +49 -0
  500. package/runtime/Fusion/Logging/messages.luau +46 -0
  501. package/runtime/Fusion/Logging/parseError.luau +25 -0
  502. package/runtime/Fusion/Memory/checkLifetime.luau +134 -0
  503. package/runtime/Fusion/Memory/deriveScope.luau +24 -0
  504. package/runtime/Fusion/Memory/deriveScopeImpl.luau +40 -0
  505. package/runtime/Fusion/Memory/doCleanup.luau +91 -0
  506. package/runtime/Fusion/Memory/innerScope.luau +34 -0
  507. package/runtime/Fusion/Memory/insert.luau +22 -0
  508. package/runtime/Fusion/Memory/needsDestruction.luau +17 -0
  509. package/runtime/Fusion/Memory/scoped.luau +24 -0
  510. package/runtime/Fusion/RobloxExternal.luau +98 -0
  511. package/runtime/Fusion/State/Computed.luau +122 -0
  512. package/runtime/Fusion/State/For/Disassembly.luau +207 -0
  513. package/runtime/Fusion/State/For/ForTypes.luau +30 -0
  514. package/runtime/Fusion/State/For/init.luau +101 -0
  515. package/runtime/Fusion/State/ForKeys.luau +88 -0
  516. package/runtime/Fusion/State/ForPairs.luau +91 -0
  517. package/runtime/Fusion/State/ForValues.luau +88 -0
  518. package/runtime/Fusion/State/Value.luau +76 -0
  519. package/runtime/Fusion/State/castToState.luau +26 -0
  520. package/runtime/Fusion/State/peek.luau +31 -0
  521. package/runtime/Fusion/State/updateAll.luau +1 -0
  522. package/runtime/Fusion/Types.luau +318 -0
  523. package/runtime/Fusion/Utility/Contextual.luau +91 -0
  524. package/runtime/Fusion/Utility/Safe.luau +23 -0
  525. package/runtime/Fusion/Utility/isSimilar.luau +29 -0
  526. package/runtime/Fusion/Utility/merge.luau +35 -0
  527. package/runtime/Fusion/Utility/nameOf.luau +35 -0
  528. package/runtime/Fusion/Utility/never.luau +14 -0
  529. package/runtime/Fusion/Utility/nicknames.luau +11 -0
  530. package/runtime/Fusion/Utility/xtypeof.luau +27 -0
  531. package/runtime/Fusion/_impl/Animation/ExternalTime.luau +84 -0
  532. package/runtime/Fusion/_impl/Animation/Spring.luau +313 -0
  533. package/runtime/Fusion/_impl/Animation/Stopwatch.luau +128 -0
  534. package/runtime/Fusion/_impl/Animation/Tween.luau +178 -0
  535. package/runtime/Fusion/_impl/Animation/getTweenDuration.luau +27 -0
  536. package/runtime/Fusion/_impl/Animation/getTweenRatio.luau +47 -0
  537. package/runtime/Fusion/_impl/Animation/lerpType.luau +164 -0
  538. package/runtime/Fusion/_impl/Animation/packType.luau +100 -0
  539. package/runtime/Fusion/_impl/Animation/springCoefficients.luau +80 -0
  540. package/runtime/Fusion/_impl/Animation/unpackType.luau +103 -0
  541. package/runtime/Fusion/_impl/Colour/Oklab.luau +70 -0
  542. package/runtime/Fusion/_impl/Colour/sRGB.luau +47 -0
  543. package/runtime/Fusion/_impl/External.luau +156 -0
  544. package/runtime/Fusion/_impl/ExternalDebug.luau +70 -0
  545. package/runtime/Fusion/_impl/Graph/Observer.luau +111 -0
  546. package/runtime/Fusion/_impl/Graph/castToGraph.luau +29 -0
  547. package/runtime/Fusion/_impl/Graph/change.luau +81 -0
  548. package/runtime/Fusion/_impl/Graph/depend.luau +33 -0
  549. package/runtime/Fusion/_impl/Graph/evaluate.luau +56 -0
  550. package/runtime/Fusion/_impl/Instances/Attribute.luau +58 -0
  551. package/runtime/Fusion/_impl/Instances/AttributeChange.luau +47 -0
  552. package/runtime/Fusion/_impl/Instances/AttributeOut.luau +63 -0
  553. package/runtime/Fusion/_impl/Instances/Child.luau +21 -0
  554. package/runtime/Fusion/_impl/Instances/Children.luau +148 -0
  555. package/runtime/Fusion/_impl/Instances/Hydrate.luau +29 -0
  556. package/runtime/Fusion/_impl/Instances/New.luau +48 -0
  557. package/runtime/Fusion/_impl/Instances/OnChange.luau +50 -0
  558. package/runtime/Fusion/_impl/Instances/OnEvent.luau +54 -0
  559. package/runtime/Fusion/_impl/Instances/Out.luau +69 -0
  560. package/runtime/Fusion/_impl/Instances/Tag.luau +61 -0
  561. package/runtime/Fusion/_impl/Instances/applyInstanceProps.luau +149 -0
  562. package/runtime/Fusion/_impl/Instances/defaultProps.luau +194 -0
  563. package/runtime/Fusion/_impl/LICENSE +21 -0
  564. package/runtime/Fusion/_impl/Logging/formatError.luau +49 -0
  565. package/runtime/Fusion/_impl/Logging/messages.luau +46 -0
  566. package/runtime/Fusion/_impl/Logging/parseError.luau +25 -0
  567. package/runtime/Fusion/_impl/Memory/checkLifetime.luau +134 -0
  568. package/runtime/Fusion/_impl/Memory/deriveScope.luau +24 -0
  569. package/runtime/Fusion/_impl/Memory/deriveScopeImpl.luau +40 -0
  570. package/runtime/Fusion/_impl/Memory/doCleanup.luau +91 -0
  571. package/runtime/Fusion/_impl/Memory/innerScope.luau +34 -0
  572. package/runtime/Fusion/_impl/Memory/insert.luau +22 -0
  573. package/runtime/Fusion/_impl/Memory/needsDestruction.luau +17 -0
  574. package/runtime/Fusion/_impl/Memory/scoped.luau +24 -0
  575. package/runtime/Fusion/_impl/RobloxExternal.luau +98 -0
  576. package/runtime/Fusion/_impl/State/Computed.luau +122 -0
  577. package/runtime/Fusion/_impl/State/For/Disassembly.luau +207 -0
  578. package/runtime/Fusion/_impl/State/For/ForTypes.luau +30 -0
  579. package/runtime/Fusion/_impl/State/For/init.luau +101 -0
  580. package/runtime/Fusion/_impl/State/ForKeys.luau +88 -0
  581. package/runtime/Fusion/_impl/State/ForPairs.luau +91 -0
  582. package/runtime/Fusion/_impl/State/ForValues.luau +88 -0
  583. package/runtime/Fusion/_impl/State/Value.luau +76 -0
  584. package/runtime/Fusion/_impl/State/castToState.luau +26 -0
  585. package/runtime/Fusion/_impl/State/peek.luau +31 -0
  586. package/runtime/Fusion/_impl/State/updateAll.luau +1 -0
  587. package/runtime/Fusion/_impl/Types.luau +318 -0
  588. package/runtime/Fusion/_impl/Utility/Contextual.luau +91 -0
  589. package/runtime/Fusion/_impl/Utility/Safe.luau +23 -0
  590. package/runtime/Fusion/_impl/Utility/isSimilar.luau +29 -0
  591. package/runtime/Fusion/_impl/Utility/merge.luau +35 -0
  592. package/runtime/Fusion/_impl/Utility/nameOf.luau +35 -0
  593. package/runtime/Fusion/_impl/Utility/never.luau +14 -0
  594. package/runtime/Fusion/_impl/Utility/nicknames.luau +11 -0
  595. package/runtime/Fusion/_impl/Utility/xtypeof.luau +27 -0
  596. package/runtime/Fusion/_impl/init.luau +83 -0
  597. package/runtime/Fusion/init.luau +27 -0
  598. package/runtime/Iris/API.lua +2085 -0
  599. package/runtime/Iris/Internal.lua +895 -0
  600. package/runtime/Iris/LICENSE.txt +21 -0
  601. package/runtime/Iris/PubTypes.lua +43 -0
  602. package/runtime/Iris/Types.lua +660 -0
  603. package/runtime/Iris/WidgetTypes.lua +521 -0
  604. package/runtime/Iris/_impl/API.lua +2085 -0
  605. package/runtime/Iris/_impl/Internal.lua +895 -0
  606. package/runtime/Iris/_impl/LICENSE.txt +21 -0
  607. package/runtime/Iris/_impl/PubTypes.lua +43 -0
  608. package/runtime/Iris/_impl/Types.lua +660 -0
  609. package/runtime/Iris/_impl/WidgetTypes.lua +521 -0
  610. package/runtime/Iris/_impl/config.lua +305 -0
  611. package/runtime/Iris/_impl/init.lua +696 -0
  612. package/runtime/Iris/_impl/widgets/Button.lua +90 -0
  613. package/runtime/Iris/_impl/widgets/Checkbox.lua +115 -0
  614. package/runtime/Iris/_impl/widgets/Combo.lua +492 -0
  615. package/runtime/Iris/_impl/widgets/Format.lua +140 -0
  616. package/runtime/Iris/_impl/widgets/Image.lua +155 -0
  617. package/runtime/Iris/_impl/widgets/Input.lua +1232 -0
  618. package/runtime/Iris/_impl/widgets/Menu.lua +599 -0
  619. package/runtime/Iris/_impl/widgets/Plot.lua +639 -0
  620. package/runtime/Iris/_impl/widgets/RadioButton.lua +126 -0
  621. package/runtime/Iris/_impl/widgets/Root.lua +143 -0
  622. package/runtime/Iris/_impl/widgets/Tab.lua +333 -0
  623. package/runtime/Iris/_impl/widgets/Table.lua +635 -0
  624. package/runtime/Iris/_impl/widgets/Text.lua +132 -0
  625. package/runtime/Iris/_impl/widgets/Tree.lua +287 -0
  626. package/runtime/Iris/_impl/widgets/Window.lua +1075 -0
  627. package/runtime/Iris/_impl/widgets/init.lua +447 -0
  628. package/runtime/Iris/config.lua +305 -0
  629. package/runtime/Iris/init.lua +696 -0
  630. package/runtime/Iris/init.luau +12 -0
  631. package/runtime/Iris/widgets/Button.lua +90 -0
  632. package/runtime/Iris/widgets/Checkbox.lua +115 -0
  633. package/runtime/Iris/widgets/Combo.lua +492 -0
  634. package/runtime/Iris/widgets/Format.lua +140 -0
  635. package/runtime/Iris/widgets/Image.lua +155 -0
  636. package/runtime/Iris/widgets/Input.lua +1232 -0
  637. package/runtime/Iris/widgets/Menu.lua +599 -0
  638. package/runtime/Iris/widgets/Plot.lua +639 -0
  639. package/runtime/Iris/widgets/RadioButton.lua +126 -0
  640. package/runtime/Iris/widgets/Root.lua +143 -0
  641. package/runtime/Iris/widgets/Tab.lua +333 -0
  642. package/runtime/Iris/widgets/Table.lua +635 -0
  643. package/runtime/Iris/widgets/Text.lua +132 -0
  644. package/runtime/Iris/widgets/Tree.lua +287 -0
  645. package/runtime/Iris/widgets/Window.lua +1075 -0
  646. package/runtime/Iris/widgets/init.lua +447 -0
  647. package/runtime/Janitor/FastDefer.luau +33 -0
  648. package/runtime/Janitor/LICENSE +21 -0
  649. package/runtime/Janitor/_impl/FastDefer.luau +33 -0
  650. package/runtime/Janitor/_impl/LICENSE +21 -0
  651. package/runtime/Janitor/_impl/init.luau +999 -0
  652. package/runtime/Janitor/init.luau +45 -0
  653. package/runtime/MathUtils/init.luau +100 -0
  654. package/runtime/Module3D/LICENSE +21 -0
  655. package/runtime/Module3D/_impl/LICENSE +21 -0
  656. package/runtime/Module3D/_impl/init.luau +269 -0
  657. package/runtime/Module3D/init.luau +14 -0
  658. package/runtime/Net/init.luau +125 -0
  659. package/runtime/Net/src/codec.luau +153 -0
  660. package/runtime/Occlude/init.luau +54 -0
  661. package/runtime/Promise/LICENSE +21 -0
  662. package/runtime/Promise/_impl/LICENSE +21 -0
  663. package/runtime/Promise/_impl/init.lua +1991 -0
  664. package/runtime/Promise/init.lua +1990 -0
  665. package/runtime/Promise/init.luau +13 -0
  666. package/runtime/Promise/types.luau +46 -0
  667. package/runtime/SOURCES.md +22 -0
  668. package/runtime/Spring/LICENSE +201 -0
  669. package/runtime/Spring/_impl/LICENSE +201 -0
  670. package/runtime/Spring/_impl/init.luau +111 -0
  671. package/runtime/Spring/init.luau +24 -0
  672. package/runtime/StateMachine/Classes/State.lua +375 -0
  673. package/runtime/StateMachine/Classes/Transition.lua +336 -0
  674. package/runtime/StateMachine/Functions/deepCopy.lua +19 -0
  675. package/runtime/StateMachine/Functions/mergeTables.lua +22 -0
  676. package/runtime/StateMachine/LICENSE +19 -0
  677. package/runtime/StateMachine/Vendor/Signal.lua +386 -0
  678. package/runtime/StateMachine/Vendor/Trove.lua +188 -0
  679. package/runtime/StateMachine/_impl/Classes/State.lua +375 -0
  680. package/runtime/StateMachine/_impl/Classes/Transition.lua +336 -0
  681. package/runtime/StateMachine/_impl/Functions/deepCopy.lua +19 -0
  682. package/runtime/StateMachine/_impl/Functions/mergeTables.lua +22 -0
  683. package/runtime/StateMachine/_impl/LICENSE +19 -0
  684. package/runtime/StateMachine/_impl/Vendor/Signal.lua +386 -0
  685. package/runtime/StateMachine/_impl/Vendor/Trove.lua +188 -0
  686. package/runtime/StateMachine/_impl/init.lua +595 -0
  687. package/runtime/StateMachine/init.lua +595 -0
  688. package/runtime/StateMachine/init.luau +10 -0
  689. package/runtime/StickyBillboard/init.luau +167 -0
  690. package/runtime/TopbarPlus/Attribute.lua +35 -0
  691. package/runtime/TopbarPlus/Elements/Caption.lua +316 -0
  692. package/runtime/TopbarPlus/Elements/Container.lua +215 -0
  693. package/runtime/TopbarPlus/Elements/Dropdown.lua +315 -0
  694. package/runtime/TopbarPlus/Elements/Indicator.lua +91 -0
  695. package/runtime/TopbarPlus/Elements/Menu.lua +180 -0
  696. package/runtime/TopbarPlus/Elements/Notice.lua +113 -0
  697. package/runtime/TopbarPlus/Elements/Selection.lua +49 -0
  698. package/runtime/TopbarPlus/Elements/Widget.lua +437 -0
  699. package/runtime/TopbarPlus/Features/Gamepad.lua +201 -0
  700. package/runtime/TopbarPlus/Features/Overflow.lua +360 -0
  701. package/runtime/TopbarPlus/Features/Themes/Classic.lua +27 -0
  702. package/runtime/TopbarPlus/Features/Themes/Default.lua +75 -0
  703. package/runtime/TopbarPlus/Features/Themes/init.lua +353 -0
  704. package/runtime/TopbarPlus/LICENSE +381 -0
  705. package/runtime/TopbarPlus/Packages/GoodSignal.lua +182 -0
  706. package/runtime/TopbarPlus/Packages/Janitor.lua +322 -0
  707. package/runtime/TopbarPlus/Reference.lua +30 -0
  708. package/runtime/TopbarPlus/Types.lua +477 -0
  709. package/runtime/TopbarPlus/Utility.lua +462 -0
  710. package/runtime/TopbarPlus/VERSION.lua +51 -0
  711. package/runtime/TopbarPlus/_impl/Attribute.lua +35 -0
  712. package/runtime/TopbarPlus/_impl/Elements/Caption.lua +316 -0
  713. package/runtime/TopbarPlus/_impl/Elements/Container.lua +215 -0
  714. package/runtime/TopbarPlus/_impl/Elements/Dropdown.lua +315 -0
  715. package/runtime/TopbarPlus/_impl/Elements/Indicator.lua +91 -0
  716. package/runtime/TopbarPlus/_impl/Elements/Menu.lua +180 -0
  717. package/runtime/TopbarPlus/_impl/Elements/Notice.lua +113 -0
  718. package/runtime/TopbarPlus/_impl/Elements/Selection.lua +49 -0
  719. package/runtime/TopbarPlus/_impl/Elements/Widget.lua +437 -0
  720. package/runtime/TopbarPlus/_impl/Features/Gamepad.lua +201 -0
  721. package/runtime/TopbarPlus/_impl/Features/Overflow.lua +360 -0
  722. package/runtime/TopbarPlus/_impl/Features/Themes/Classic.lua +27 -0
  723. package/runtime/TopbarPlus/_impl/Features/Themes/Default.lua +75 -0
  724. package/runtime/TopbarPlus/_impl/Features/Themes/init.lua +353 -0
  725. package/runtime/TopbarPlus/_impl/LICENSE +381 -0
  726. package/runtime/TopbarPlus/_impl/Packages/GoodSignal.lua +182 -0
  727. package/runtime/TopbarPlus/_impl/Packages/Janitor.lua +322 -0
  728. package/runtime/TopbarPlus/_impl/Reference.lua +30 -0
  729. package/runtime/TopbarPlus/_impl/Types.lua +477 -0
  730. package/runtime/TopbarPlus/_impl/Utility.lua +462 -0
  731. package/runtime/TopbarPlus/_impl/VERSION.lua +51 -0
  732. package/runtime/TopbarPlus/_impl/init.lua +1249 -0
  733. package/runtime/TopbarPlus/init.lua +1249 -0
  734. package/runtime/TopbarPlus/init.luau +8 -0
  735. package/runtime/Twinkle/init.luau +157 -0
  736. package/runtime/VfxUtil/init.luau +164 -0
  737. package/src/api.generated.js +3675 -0
  738. package/src/api.js +57 -0
  739. package/src/architecture.js +393 -0
  740. package/src/cli.js +192 -0
  741. package/src/compile.js +40 -0
  742. package/src/emit.js +213 -0
  743. package/src/lex.js +149 -0
  744. package/src/libs.js +355 -0
  745. package/src/parse.js +421 -0
  746. package/src/preprocess.js +80 -0
  747. package/src/understand.js +453 -0
  748. package/templates/game/.clangd +5 -0
  749. package/templates/game/.vscode/c_cpp_properties.json +23 -0
  750. package/templates/game/.vscode/settings.json +12 -0
  751. package/templates/game/Packages/.gitkeep +0 -0
  752. package/templates/game/cluaupp.config.json +6 -0
  753. package/templates/game/compile_flags.txt +3 -0
  754. package/templates/game/default.project.json +39 -0
  755. package/templates/game/package.json +9 -0
  756. package/templates/game/src/client/init.client.cpp +5 -0
  757. package/templates/game/src/server/leaderstats.server.cpp +28 -0
  758. package/templates/game/src/shared/config.cpp +5 -0
  759. package/templates/game/src/shared/config.h +3 -0
  760. package/templates/game/wally.toml +11 -0
@@ -0,0 +1,395 @@
1
+ const RunService = game:GetService("RunService")
2
+ const Players = game:GetService("Players")
3
+ const Shared = script.Parent.Parent.Shared
4
+
5
+ const Warn = require(Shared.Warn)
6
+ const Entity = require(Shared.Entity)
7
+ const Events = require(Shared.Events)
8
+ const Holder = require(Shared.Holder)
9
+ const ModelHelper = require(Shared.ModelHelper)
10
+ const Types = require(Shared.Types)
11
+ const ClockUnwrap = require(Shared.ClockUnwrap)
12
+ const Stats = require(Shared.Stats).CLIENT
13
+ const ClientClock = require(script.Parent.ClientClock)
14
+
15
+ local BytesReceived = 0
16
+ local NewPerSec = 0
17
+ local RemovedPerSec = 0
18
+ local ChangesPerSec = 0
19
+
20
+ const SetTickMode = Entity._SetTickMode
21
+
22
+ const UnreliableEvent = Shared.Remotes.Replicate
23
+ const ReliableEvent = Shared.Remotes.ReplicateFull
24
+ const HeartbeatRemote = Shared.Remotes.Heartbeat
25
+ const ClientClockRelayRemote = Shared.Remotes.ClientClockRelay
26
+
27
+ const ServerWrap = ClockUnwrap.new()
28
+ const ClientOwnedWrap: ClockUnwrap.Store = {}
29
+
30
+ const TickerHeaderBytes = 4 + 1
31
+ const FULL_BYTES = 4 * 3 + 2 * 3
32
+ const YAW_BYTES = 4 * 3 + 2
33
+
34
+ const TAU = 2 * math.pi
35
+
36
+ const function UnmapRotation(u16: number): number
37
+ return (u16 / 65535) * TAU - math.pi
38
+ end
39
+
40
+ const function ReadTickerHeader(b: buffer, index: number): (number, boolean, boolean)
41
+ const lastTicked = ClockUnwrap.unwrap(ServerWrap, buffer.readu32(b, index))
42
+ const packed = buffer.readu8(b, index + 4)
43
+
44
+ const isHalfTickRate = bit32.band(packed, 1) == 1
45
+ const isFull = bit32.band(packed, 2) == 2
46
+
47
+ return lastTicked, isFull, isHalfTickRate
48
+ end
49
+
50
+ const function DeserializeFull(b: buffer, index: number): CFrame
51
+ const x = buffer.readf32(b, index)
52
+ index += 4
53
+ const y = buffer.readf32(b, index)
54
+ index += 4
55
+ const z = buffer.readf32(b, index)
56
+ index += 4
57
+
58
+ const rx = UnmapRotation(buffer.readu16(b, index))
59
+ index += 2
60
+ const ry = UnmapRotation(buffer.readu16(b, index))
61
+ index += 2
62
+ const rz = UnmapRotation(buffer.readu16(b, index))
63
+ index += 2
64
+
65
+ return CFrame.new(x, y, z) * CFrame.fromOrientation(rx, ry, rz)
66
+ end
67
+
68
+ const function DeserializeYaw(b: buffer, index: number): CFrame
69
+ const x = buffer.readf32(b, index)
70
+ index += 4
71
+ const y = buffer.readf32(b, index)
72
+ index += 4
73
+ const z = buffer.readf32(b, index)
74
+ index += 4
75
+
76
+ const ry = UnmapRotation(buffer.readu16(b, index))
77
+ index += 2
78
+
79
+ return CFrame.new(x, y, z) * CFrame.fromOrientation(0, ry, 0)
80
+ end
81
+
82
+ const function HandleRemoved(id: number)
83
+ const entity = Holder.GetEntityFromId(id)
84
+ if entity then
85
+ Entity.Destroy(entity)
86
+ return
87
+ end
88
+ Warn.high("Tried to remove non existent entity with id", id)
89
+ end
90
+
91
+ const function SetMountId(entity: Types.Entity, mountParentId: number?)
92
+ entity.mountParentId = mountParentId
93
+ Events._Signals.EntityMountChanged:Fire(entity, mountParentId)
94
+ end
95
+
96
+ const function SetMountOffset(entity: Types.Entity, mountOffset: CFrame?)
97
+ entity.mountOffset = mountOffset or CFrame.identity
98
+ end
99
+
100
+ const ValueChanges = {
101
+ networkOwner = Entity["设置网络主控玩家"],
102
+ isHalfTicked = SetTickMode,
103
+ _data = Entity.SetData,
104
+ entityConfig = Entity.SetConfig,
105
+ autoUpdatePos = Entity.SetAutoUpdatePos,
106
+ mountParentId = SetMountId,
107
+ mountOffset = SetMountOffset,
108
+ broadPhase = Entity.SetBroadPhase,
109
+ }
110
+
111
+ const function HandleChanges(changes: { id: number, data: { { any } } })
112
+ const entity = Holder.GetEntityFromId(changes.id)
113
+ if not entity then
114
+ return
115
+ end
116
+ local hasMetadata
117
+ local modelData
118
+ for _, pair in changes.data do
119
+ const key = pair[1]
120
+ const value = pair[2]
121
+
122
+ const handler = ValueChanges[key]
123
+ if handler then
124
+ handler(entity, value)
125
+ elseif key == "latestCFrame" then
126
+ Entity.SetCFrame(entity, value)
127
+ elseif key == "_modelMetaData" then
128
+ hasMetadata = value
129
+ elseif key == "model" then
130
+ modelData = value
131
+ elseif key == "_player" then
132
+ if value then
133
+ Holder.SetAsCharacter(value, entity)
134
+ else
135
+ Holder.RemovePlayerCharacter(entity)
136
+ end
137
+ elseif key == "paused" then
138
+ if value then
139
+ Entity.PauseReplication(entity)
140
+ else
141
+ Entity.ResumeReplication(entity)
142
+ end
143
+ elseif key == "_lockedCFReplication" then
144
+ entity._lockedCFReplication = value
145
+ if not value then
146
+ const part = Entity._GetPart(entity)
147
+ if part then
148
+ Entity._UnlockPartPhysicsReplication(part)
149
+ end
150
+ else
151
+ Entity.SyncOwnerShip(entity)
152
+ end
153
+ else
154
+ Warn.high("Unhandled entity change key:", key)
155
+ end
156
+ end
157
+
158
+ if modelData ~= nil then
159
+ const model, modelType = ModelHelper.CreateModelFromData(modelData)
160
+ Entity.SetModel(entity, model, modelType :: any)
161
+ entity._modelMetaData = hasMetadata
162
+ end
163
+ end
164
+
165
+ const function HandleNewEntity(data: Types.EntityReceivePacket)
166
+ const model, modelType = ModelHelper.CreateModelFromData(data.model)
167
+ const entity = Entity._new(data.config, model, modelType, data.cframe)
168
+
169
+ entity.id = data.id
170
+ entity._player = data._player
171
+ entity._modelMetaData = data._modelMetaData
172
+ entity.paused = data.paused or false
173
+ entity.isHalfTicked = data.isHalfTicked
174
+ entity._data = data._data
175
+ entity.mountParentId = data.mountParentId
176
+ entity.mountOffset = data.mountOffset or CFrame.identity
177
+ entity.broadPhase = data.broadPhase or entity.broadPhase
178
+ entity._lockedCFReplication = data._lockedCFReplication or false
179
+
180
+ Entity.Push(entity, data.time, data.cframe)
181
+
182
+ Entity["设置网络主控玩家"](entity, data.networkOwner)
183
+ SetTickMode(entity, data.isHalfTicked)
184
+ Holder.RegisterEntity(entity)
185
+ end
186
+
187
+ const function PushCFrameFor(
188
+ id: number,
189
+ clientOwned: boolean,
190
+ cframe: CFrame,
191
+ time: number,
192
+ isHalfTick: boolean,
193
+ teleport: boolean?
194
+ ): boolean
195
+ const entity = Holder.GetEntityFromId(id)
196
+ if not entity then
197
+ Warn.high("Received update for non existent entity with id", id)
198
+ return false
199
+ end
200
+
201
+ const withinTeleportThreshold = entity._teleport and os.clock() - entity._teleport < 0.5
202
+ if withinTeleportThreshold then
203
+ if teleport then
204
+ entity._teleport = nil
205
+ else
206
+ return false
207
+ end
208
+ end
209
+
210
+ if clientOwned then
211
+ const renderCache = entity._clientClock
212
+ if renderCache then
213
+ if isHalfTick then
214
+ renderCache:SetTickRate(renderCache._baseTickRate * 2)
215
+ else
216
+ renderCache:SetTickRate(renderCache._baseTickRate)
217
+ end
218
+ renderCache:OnSnapShot(time)
219
+ end
220
+ else
221
+ const renderCaches = entity.entityConfig.CLIENT_CLOCK
222
+ if renderCaches then
223
+ const renderCache = isHalfTick and renderCaches.HALF or renderCaches.NORMAL
224
+ if renderCache then
225
+ renderCache:OnSnapShot(time)
226
+ end
227
+ end
228
+ end
229
+
230
+ if entity.isHalfTicked ~= isHalfTick then
231
+ SetTickMode(entity, isHalfTick)
232
+ end
233
+ entity.isHalfTicked = isHalfTick
234
+
235
+ Entity.Push(entity, time, cframe)
236
+ return true
237
+ end
238
+
239
+ const function HandleClientOwned(b: buffer)
240
+ BytesReceived += buffer.len(b)
241
+ const bLen = buffer.len(b)
242
+ local index = 0
243
+
244
+ while index < bLen do
245
+ const rawTime = buffer.readu32(b, index)
246
+ index += 4
247
+ const length = buffer.readu8(b, index)
248
+ index += 1
249
+ for i = 1, length do
250
+ const id = buffer.readu16(b, index)
251
+ index += 2
252
+ const packed = buffer.readu8(b, index)
253
+ index += 1
254
+ const isFull = bit32.band(packed, 1) == 1
255
+ const isHalfTickRate = bit32.band(packed, 2) == 2
256
+ const teleport = bit32.band(packed, 4) == 4
257
+ local cf: CFrame
258
+ if isFull then
259
+ cf = DeserializeFull(b, index)
260
+ index += FULL_BYTES
261
+ else
262
+ cf = DeserializeYaw(b, index)
263
+ index += YAW_BYTES
264
+ end
265
+ const entity = Holder.GetEntityFromId(id)
266
+ if not entity then
267
+ Warn.medium("Received update for non existent entity with id", id)
268
+ continue
269
+ end
270
+ -- Unwrap in the source player's frame (delta-based, offset-0). Shares state with
271
+ -- this player's other entity packets + the clock relay.
272
+ const time = ClockUnwrap.unwrapFor(ClientOwnedWrap, entity.networkOwner or "__unknown", rawTime)
273
+ PushCFrameFor(id, true, cf, time, isHalfTickRate, teleport)
274
+ end
275
+ end
276
+ end
277
+
278
+ const function HandleServerOwned(b: buffer)
279
+ const bLen = buffer.len(b)
280
+ BytesReceived += bLen
281
+ local index = 0
282
+ while index < bLen do
283
+ const lastTicked, isFull, isHalfTickRate = ReadTickerHeader(b, index)
284
+ index += TickerHeaderBytes
285
+ const length = buffer.readu8(b, index)
286
+ index += 1
287
+ for i = 1, length do
288
+ const id = buffer.readu16(b, index)
289
+ index += 2
290
+ local cframe
291
+ if isFull then
292
+ cframe = DeserializeFull(b, index)
293
+ index += FULL_BYTES
294
+ else
295
+ cframe = DeserializeYaw(b, index)
296
+ index += YAW_BYTES
297
+ end
298
+ PushCFrameFor(id, false, cframe, lastTicked, isHalfTickRate)
299
+ end
300
+ end
301
+ end
302
+
303
+ const function HandleUnreliable(id: string, data: buffer)
304
+ if id == "X" then -- Server Owned
305
+ HandleServerOwned(data)
306
+ elseif id == "O" then -- Client Owned
307
+ HandleClientOwned(data)
308
+ else
309
+ Warn.high("Unknown unreliable replicate id", id)
310
+ end
311
+ end
312
+
313
+ const function HandleReliable(newEntities: {}, removedEntities: { number }, entityChanges: { any })
314
+ --RunService.PreAnimation:Wait() -- was encountering an issues where instances were not replicated prob was streaming endabled?
315
+ if removedEntities then
316
+ for _, id in removedEntities do
317
+ HandleRemoved(id)
318
+ end
319
+ RemovedPerSec += #removedEntities
320
+ end
321
+
322
+ if newEntities then
323
+ for _, data: any in newEntities do
324
+ HandleNewEntity(data)
325
+ end
326
+ NewPerSec += #newEntities
327
+ end
328
+
329
+ if entityChanges then
330
+ for _, changeData in entityChanges do
331
+ HandleChanges(changeData)
332
+ end
333
+ ChangesPerSec += #entityChanges
334
+ end
335
+ end
336
+
337
+ UnreliableEvent.OnClientEvent:Connect(HandleUnreliable)
338
+ ReliableEvent.OnClientEvent:Connect(HandleReliable)
339
+
340
+ HeartbeatRemote.OnClientEvent:Connect(function(time: number)
341
+ -- Reduce the full-precision server time into the same offset-0 frame as the buffered
342
+ -- server-owned headers, otherwise the two feeds would disagree and freeze the clock.
343
+ const unwrapped = ClockUnwrap.unwrap(ServerWrap, ClockUnwrap.quantize(time))
344
+ for clock in ClientClock.serverOwnedClocks do
345
+ -- Refresh, not OnSnapShot: keep the clock fresh without feeding the heartbeat
346
+ -- cadence into the interpolation buffer's jitter estimate.
347
+ clock:Refresh(unwrapped)
348
+ end
349
+ end)
350
+
351
+ -- Client-clock relay: reseats each source to the server's authoritative wrap offset so every
352
+ -- receiver agrees on the source's epoch regardless of join time. max() avoids regressing a wrap
353
+ -- this client already witnessed between relays.
354
+ ClientClockRelayRemote.OnClientEvent:Connect(function(list: { { player: Player, raw: number, offset: number } })
355
+ if type(list) ~= "table" then
356
+ return
357
+ end
358
+ for _, entry in list do
359
+ const player = entry.player
360
+ const raw = entry.raw
361
+ const offset = entry.offset
362
+ if player and type(raw) == "number" and type(offset) == "number" then
363
+ local state = ClientOwnedWrap[player]
364
+ if not state then
365
+ state = ClockUnwrap.new()
366
+ ClientOwnedWrap[player] = state
367
+ end
368
+ state.lastRaw = raw
369
+ state.offset = math.max(state.offset, offset)
370
+ end
371
+ end
372
+ end)
373
+
374
+ Players.PlayerRemoving:Connect(function(player)
375
+ ClientOwnedWrap[player] = nil
376
+ end)
377
+
378
+ local lastByteCheckTime = 0
379
+ RunService.Heartbeat:Connect(function()
380
+ if os.clock() - lastByteCheckTime > 1 then
381
+ if not Stats._PAUSE then
382
+ Stats.BYTES_RECEIVED_PER_SEC = BytesReceived
383
+ Stats.NEW_ENTITIES_PER_SEC = NewPerSec
384
+ Stats.ENTITY_CHANGES_PER_SEC = ChangesPerSec
385
+ Stats.ENTITY_REMOVALS_PER_SEC = RemovedPerSec
386
+ end
387
+ NewPerSec = 0
388
+ RemovedPerSec = 0
389
+ ChangesPerSec = 0
390
+ BytesReceived = 0
391
+ lastByteCheckTime = os.clock()
392
+ end
393
+ end)
394
+
395
+ return nil
@@ -0,0 +1,333 @@
1
+ const Shared = script.Parent.Parent.Shared
2
+
3
+ const RunService = game:GetService("RunService")
4
+
5
+ const Ticker = require(Shared.Ticker)
6
+ const Warn = require(Shared.Warn)
7
+ const StatsALL = require(script.Parent.Parent.Shared.Stats)
8
+ const ApplyMounts = require(script.Parent.Parent.Shared.ApplyMounts)
9
+ const RenderCache = require(script.Parent.ClientClock)
10
+ const ModelResolver = require(script.Parent.ModelResolver)
11
+ const Entity = require(Shared.Entity)
12
+ const Holder = require(Shared.Holder)
13
+ const Config = require(Shared.Config)
14
+ const Types = require(Shared.Types)
15
+ const Sender = require(script.Parent.Sender)
16
+ const Stats = require(Shared.Stats).CLIENT
17
+
18
+ const CLIENT_CLOCK_SYNC_RATE = 15 -- should be fine having lower then server
19
+ require(script.Parent.Player)
20
+ require(script.Parent.Receiver)
21
+
22
+ const idMap = Holder.idMap
23
+
24
+ local FrustumLookVector = vector.create(0, 0, -1)
25
+ local FrustumRightVector = vector.create(1, 0, 0)
26
+ local FrustumUpVector = vector.create(0, 1, 0)
27
+ local FrustumPosition = vector.create(0, 0, 0)
28
+ local TanHorizontal = 0
29
+ local TanVertical = 0
30
+
31
+ const function PrepareFrustumCheck()
32
+ const cframe: CFrame = workspace.CurrentCamera.CFrame
33
+ FrustumLookVector = cframe.LookVector :: any
34
+ FrustumRightVector = cframe.RightVector :: any
35
+ FrustumUpVector = cframe.UpVector :: any
36
+
37
+ FrustumPosition = cframe.Position :: any
38
+
39
+ const cam = workspace.CurrentCamera
40
+ const halfFov = math.rad(cam.FieldOfView / 2)
41
+ const aspectRatio = cam.ViewportSize.X / cam.ViewportSize.Y
42
+ TanHorizontal = math.tan(halfFov) * aspectRatio
43
+ TanVertical = math.tan(halfFov)
44
+ end
45
+
46
+ const function CheckPointInFrustum(pos: vector)
47
+ const diff = pos - FrustumPosition
48
+
49
+ const magnitude = vector.magnitude(diff)
50
+
51
+ if magnitude == 0 then
52
+ return true
53
+ end
54
+
55
+ const forwardDis = vector.dot(diff, FrustumLookVector)
56
+
57
+ const forwardDot = forwardDis / magnitude
58
+ if forwardDot < 0 then
59
+ return false
60
+ end
61
+ if forwardDis < 1 then
62
+ return true
63
+ end
64
+ const unit = diff / magnitude
65
+ const rightDot = vector.dot(unit, FrustumRightVector)
66
+
67
+ if math.abs(rightDot) > forwardDot * TanHorizontal then
68
+ return false
69
+ end
70
+
71
+ const upDot = vector.dot(unit, FrustumUpVector)
72
+ if math.abs(upDot) > forwardDot * TanVertical then
73
+ return false
74
+ end
75
+ return true
76
+ end
77
+
78
+ const function CheckBroadPhaseInFrustum(center: vector, size: vector)
79
+ if size == vector.zero then
80
+ return CheckPointInFrustum(center)
81
+ end
82
+ const halfSize = size * 0.5
83
+ const halfX = halfSize.x
84
+ const halfY = halfSize.y
85
+ const halfZ = halfSize.z
86
+ const negX = -halfX
87
+ const negY = -halfY
88
+ const negZ = -halfZ
89
+
90
+ return CheckPointInFrustum(center + vector.create(halfX, halfY, halfZ))
91
+ or CheckPointInFrustum(center + vector.create(negX, halfY, halfZ))
92
+ or CheckPointInFrustum(center + vector.create(halfX, negY, halfZ))
93
+ or CheckPointInFrustum(center + vector.create(negX, negY, halfZ))
94
+ or CheckPointInFrustum(center + vector.create(halfX, halfY, negZ))
95
+ or CheckPointInFrustum(center + vector.create(negX, halfY, negZ))
96
+ or CheckPointInFrustum(center + vector.create(halfX, negY, negZ))
97
+ or CheckPointInFrustum(center + vector.create(negX, negY, negZ))
98
+ end
99
+ const Ticks = 4
100
+ local OutOfBroadPhaseTick = 0
101
+ local CurrentTick = 0
102
+ local TotalInterpolationTime = 0
103
+ local AmtInterpolations = 0
104
+
105
+ local CheckedThisFrame = 0
106
+ local TotalCulled = 0
107
+ local MovedThisFrame = 0
108
+
109
+ const function Interpolate(entity: Types.Entity)
110
+ const config = entity.entityConfig
111
+ if not entity.interpolation or config.CUSTOM_INTERPOLATION then
112
+ return
113
+ end
114
+ const primaryPart = Entity.GetPrimaryPart(entity)
115
+
116
+ if not primaryPart then
117
+ return
118
+ end
119
+
120
+ if entity.isContextOwner then
121
+ return
122
+ end
123
+
124
+ if config.ASSEMBLY_ROOT_PART_CHECK then
125
+ if primaryPart.AssemblyRootPart ~= primaryPart then
126
+ Warn.low(
127
+ "Primary part for entity "
128
+ .. entity.id
129
+ .. " is not the assembly root part. Skipping interpolation for this entity."
130
+ )
131
+ return
132
+ end
133
+ end
134
+
135
+ const currentEntityTick = entity._outofBroadPhaseTick
136
+ if currentEntityTick and currentEntityTick ~= CurrentTick then
137
+ return
138
+ end
139
+
140
+ const snapshot = entity.snapshot
141
+ if not snapshot then
142
+ Warn.medium("No snapshot for entity", entity)
143
+ return
144
+ end
145
+ CheckedThisFrame += 1
146
+ debug.profilebegin("Get Render CFrame")
147
+ const targetTime = Entity.GetTargetRenderTime(entity)
148
+ const targetCFrame = snapshot:GetAt(targetTime)
149
+ debug.profileend()
150
+ if not targetCFrame then
151
+ return
152
+ end
153
+ const broadPhase: vector? = entity.broadPhase
154
+
155
+ if broadPhase then
156
+ const toCheck = targetCFrame :: any
157
+ const lastCheckedCFrame = entity.lastCheckedCFrame
158
+ debug.profilebegin("Prepare Frustum")
159
+ const passed = CheckBroadPhaseInFrustum(toCheck.Position, broadPhase)
160
+ debug.profileend()
161
+ if not passed then
162
+ if lastCheckedCFrame and lastCheckedCFrame.Position ~= toCheck.Position then
163
+ debug.profilebegin("Check Last CFrame")
164
+ const passLast = CheckBroadPhaseInFrustum(lastCheckedCFrame.Position :: any, broadPhase)
165
+ debug.profileend()
166
+ if not passLast then
167
+ TotalCulled += 1
168
+ return
169
+ end
170
+ else
171
+ if not lastCheckedCFrame then
172
+ entity.lastCheckedCFrame = toCheck
173
+ end
174
+ if not entity._outofBroadPhaseTick then
175
+ entity._outofBroadPhaseTick = OutOfBroadPhaseTick
176
+ OutOfBroadPhaseTick += 1
177
+ if OutOfBroadPhaseTick % Ticks == 0 then
178
+ OutOfBroadPhaseTick = 0
179
+ end
180
+ end
181
+ TotalCulled += 1
182
+ return
183
+ end
184
+ end
185
+ entity.lastCheckedCFrame = nil
186
+ entity._outofBroadPhaseTick = nil
187
+ end
188
+ debug.profilebegin("Set CFrame")
189
+ if targetCFrame == targetCFrame then
190
+ primaryPart.CFrame = targetCFrame
191
+ end
192
+ MovedThisFrame += 1
193
+ debug.profileend()
194
+ end
195
+
196
+ const function updateEntityStats()
197
+ if not StatsALL.SERVER._SHOULD_REPLICATE or Stats._PAUSE then
198
+ return
199
+ end
200
+ const entities = {}
201
+ for _, entity in idMap do
202
+ const id = entity.id
203
+ const config = entity.entityConfig
204
+ const configName = config and config.NAME or "DEFAULT"
205
+ const networkOwner = entity.networkOwner
206
+ const isCharacter = entity._player ~= nil
207
+
208
+ const lastRecvTime = entity.latestTime or 0
209
+ const lastReplicatedTime = entity.lastReplicatedTime or 0
210
+
211
+ local renderCache = entity._clientClock
212
+
213
+ if not renderCache then
214
+ const RenderCaches = entity.entityConfig.CLIENT_CLOCK
215
+ if RenderCaches then
216
+ renderCache = entity.isHalfTicked and RenderCaches.HALF or RenderCaches.NORMAL
217
+ end
218
+ end
219
+
220
+ local targetRender = 0
221
+ local averageLatency = 0
222
+ local deviation = 0
223
+ local bufferedTime = 0
224
+
225
+ if renderCache then
226
+ targetRender = renderCache:GetTargetRenderTime()
227
+ const interpolationBuff = renderCache.buffer
228
+ if interpolationBuff then
229
+ averageLatency = interpolationBuff.averageLatency
230
+ deviation = interpolationBuff.deviation
231
+ end
232
+ bufferedTime = RenderCache._getBuffer(renderCache)
233
+ end
234
+ const primaryPart = Entity.GetPrimaryPart(entity)
235
+ const snapshot = entity.snapshot
236
+ const currentPosition = primaryPart and primaryPart.Position
237
+ const snapshots = {}
238
+ if snapshot then
239
+ for _, snap in snapshot.cache do
240
+ table.insert(snapshots, { t = snap.t, value = snap.value, velocity = snap.velocity })
241
+ end
242
+ table.sort(snapshots, function(a, b)
243
+ return a.t > b.t
244
+ end)
245
+ end
246
+ const data = {
247
+ id = id,
248
+ entity = entity,
249
+ networkOwner = networkOwner,
250
+ isCharacter = isCharacter,
251
+ config = configName,
252
+ lastReceivedTime = lastRecvTime,
253
+ lastReplicatedTime = lastReplicatedTime,
254
+ targetTime = targetRender,
255
+ averageLatency = averageLatency,
256
+ deviation = deviation,
257
+ bufferedTime = bufferedTime,
258
+ currentPosition = currentPosition,
259
+ snapshots = snapshots,
260
+ }
261
+ table.insert(entities, data)
262
+ end
263
+ Stats.CLIENT_ENTITIES = entities
264
+ end
265
+ Config._WaitForLock(function()
266
+ RunService.Heartbeat:Connect(function(deltaTime: number)
267
+ CurrentTick += 1
268
+ if CurrentTick % Ticks == 0 then -- Runs every 4 frames at 60hz this is 15hz
269
+ Stats.TOTAL_ENTITIES_CULLED = TotalCulled
270
+ TotalCulled = 0
271
+ CurrentTick = 0
272
+ end
273
+ RenderCache.UpdateAll(deltaTime)
274
+ debug.profilebegin("Prepare Frustum Check")
275
+ PrepareFrustumCheck()
276
+ debug.profileend()
277
+ local total = 0
278
+ const startTime = os.clock()
279
+ debug.profilebegin("Interpolate Entities")
280
+ for _, entity in idMap do
281
+ ModelResolver(entity)
282
+ if entity.destroyed or entity.paused then
283
+ continue
284
+ end
285
+ if entity.mountParentId then
286
+ continue
287
+ end
288
+ total += 1
289
+ Interpolate(entity)
290
+ end
291
+ debug.profileend()
292
+ const endTime = os.clock()
293
+ debug.profilebegin("Update Entity Stats")
294
+ updateEntityStats()
295
+ debug.profileend()
296
+ TotalInterpolationTime += (endTime - startTime)
297
+ AmtInterpolations += 1
298
+
299
+ ApplyMounts()
300
+ if not Stats._PAUSE then
301
+ Stats.TOTAL_CLIENT_ENTITIES_CHECKED_THIS_FRAME = total
302
+ Stats.ENTITIES_MOVED_THIS_FRAME = MovedThisFrame
303
+ Stats.TOTAL_CLIENT_ENTITIES = total
304
+ Stats.AVG_INTERPOLATION_TIME_MS = (TotalInterpolationTime / AmtInterpolations) * 1000
305
+ end
306
+ MovedThisFrame = 0
307
+ CheckedThisFrame = 0
308
+ if AmtInterpolations > 60 then
309
+ TotalInterpolationTime = 0
310
+ AmtInterpolations = 0
311
+ end
312
+ Sender.Update()
313
+ Ticker._IncrementGlobalTick()
314
+ end)
315
+ -- Client clock heartbeat: sends the FULL os.clock so the server can seat this client's wrap
316
+ -- epoch directly (remotes serialize numbers as f64 anyway, so it's the same bytes as a u32).
317
+ -- Keeps the server's view fresh + correct even for a still (macro/auto-click) player that
318
+ -- sends no entity packets. See ClockUnwrap.
319
+ const ClientHeartbeatRemote = Shared.Remotes.ClientHeartbeat
320
+ ClientHeartbeatRemote:FireServer(os.clock()) -- seed on join
321
+ local clientHeartbeatAcc = 0
322
+ RunService.Heartbeat:Connect(function(dt: number)
323
+ clientHeartbeatAcc += dt
324
+ if clientHeartbeatAcc >= CLIENT_CLOCK_SYNC_RATE then
325
+ clientHeartbeatAcc = 0
326
+ ClientHeartbeatRemote:FireServer(os.clock())
327
+ end
328
+ end)
329
+
330
+ Shared.Remotes.ClientLoaded:FireServer()
331
+ end)
332
+
333
+ return nil