com.beamable 5.1.0 → 5.1.1

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 (405) hide show
  1. package/.attestation.p7m +0 -0
  2. package/CHANGELOG.md +20 -0
  3. package/Common/Runtime/AgnosticAttribute.cs +2 -2
  4. package/Common/Runtime/Api/AliasHelper.cs +2 -2
  5. package/Common/Runtime/Api/Analytics/AnalyticsEventRequest.cs +2 -2
  6. package/Common/Runtime/Api/Analytics/AnalyticsService.cs +2 -2
  7. package/Common/Runtime/Api/Analytics/IBeamAnalyticsService.cs +2 -2
  8. package/Common/Runtime/Api/Analytics/Models/CoreEvent.cs +2 -2
  9. package/Common/Runtime/Api/Analytics/Models/IAnalyticsEvent.cs +2 -2
  10. package/Common/Runtime/Api/Analytics/Models/SampleCustomEvent.cs +2 -2
  11. package/Common/Runtime/Api/Announcements/AbsAnnouncementsApi.cs +2 -2
  12. package/Common/Runtime/Api/Announcements/IAnnouncementsApi.cs +2 -2
  13. package/Common/Runtime/Api/Auth/AuthApi.cs +2 -2
  14. package/Common/Runtime/Api/Auth/IAuthApi.cs +2 -2
  15. package/Common/Runtime/Api/Calendars/AbsCalendarApi.cs +2 -2
  16. package/Common/Runtime/Api/Calendars/ICalendarApi.cs +2 -2
  17. package/Common/Runtime/Api/Chat/ChatApi.cs +2 -2
  18. package/Common/Runtime/Api/Chat/IChatApi.cs +2 -2
  19. package/Common/Runtime/Api/CloudData/CloudDataApi.cs +2 -2
  20. package/Common/Runtime/Api/CloudData/ICloudDataApi.cs +2 -2
  21. package/Common/Runtime/Api/CometClientData.cs +2 -2
  22. package/Common/Runtime/Api/Commerce/ICommerceApi.cs +2 -2
  23. package/Common/Runtime/Api/Content/IContentApi.cs +2 -2
  24. package/Common/Runtime/Api/Events/AbsEventsApi.cs +2 -2
  25. package/Common/Runtime/Api/Events/IEventsApi.cs +2 -2
  26. package/Common/Runtime/Api/Groups/GroupsApi.cs +2 -2
  27. package/Common/Runtime/Api/Groups/IGroupsApi.cs +2 -2
  28. package/Common/Runtime/Api/IAccessToken.cs +2 -2
  29. package/Common/Runtime/Api/IBeamableFilesystemAccessor.cs +2 -2
  30. package/Common/Runtime/Api/IBeamableRequester.cs +2 -2
  31. package/Common/Runtime/Api/IConnectivityChecker.cs +2 -2
  32. package/Common/Runtime/Api/IHasBeamableRequester.cs +2 -2
  33. package/Common/Runtime/Api/IServiceRoutingStrategy.cs +2 -2
  34. package/Common/Runtime/Api/ISupportsGet.cs +2 -2
  35. package/Common/Runtime/Api/IUserContext.cs +2 -2
  36. package/Common/Runtime/Api/IUserDataCache.cs +2 -2
  37. package/Common/Runtime/Api/Inventory/IInventoryApi.cs +2 -2
  38. package/Common/Runtime/Api/Inventory/InventoryApi.cs +2 -2
  39. package/Common/Runtime/Api/Inventory/InventoryUpdateBuilder.cs +2 -2
  40. package/Common/Runtime/Api/Leaderboards/ILeaderboardApi.cs +2 -2
  41. package/Common/Runtime/Api/Leaderboards/LeaderboardApi.cs +2 -2
  42. package/Common/Runtime/Api/Lobbies/ILobbyApi.cs +2 -2
  43. package/Common/Runtime/Api/Lobbies/Lobby.cs +2 -2
  44. package/Common/Runtime/Api/Lobbies/LobbyNotification.cs +2 -2
  45. package/Common/Runtime/Api/Lobbies/LobbyPlayer.cs +2 -2
  46. package/Common/Runtime/Api/Lobbies/LobbyRestriction.cs +2 -2
  47. package/Common/Runtime/Api/Lobbies/LobbyService.cs +2 -2
  48. package/Common/Runtime/Api/Lobbies/LobbyUtils.cs +2 -2
  49. package/Common/Runtime/Api/Lobbies/NotInLobby.cs +2 -2
  50. package/Common/Runtime/Api/Lobbies/Requests/AddTagsRequest.cs +2 -2
  51. package/Common/Runtime/Api/Lobbies/Requests/CreateLobbyRequest.cs +2 -2
  52. package/Common/Runtime/Api/Lobbies/Requests/JoinByPasscodeRequest.cs +2 -2
  53. package/Common/Runtime/Api/Lobbies/Requests/JoinLobbyRequest.cs +2 -2
  54. package/Common/Runtime/Api/Lobbies/Requests/LobbyQueryRequest.cs +2 -2
  55. package/Common/Runtime/Api/Lobbies/Requests/LobbyQueryResponse.cs +2 -2
  56. package/Common/Runtime/Api/Lobbies/Requests/RemoveFromLobbyRequest.cs +2 -2
  57. package/Common/Runtime/Api/Lobbies/Requests/RemoveTagsRequest.cs +2 -2
  58. package/Common/Runtime/Api/Lobbies/Requests/UpdateLobbyRequest.cs +2 -2
  59. package/Common/Runtime/Api/Mail/AbsMailApi.cs +2 -2
  60. package/Common/Runtime/Api/Mail/IMailApi.cs +2 -2
  61. package/Common/Runtime/Api/Notifications/INotificationService.cs +2 -2
  62. package/Common/Runtime/Api/Notifications/PrimitiveStringPayload.cs +2 -2
  63. package/Common/Runtime/Api/Parties/IPartyApi.cs +2 -2
  64. package/Common/Runtime/Api/Parties/NotInParty.cs +2 -2
  65. package/Common/Runtime/Api/Parties/Party.cs +2 -2
  66. package/Common/Runtime/Api/Parties/PartyNotifications.cs +2 -2
  67. package/Common/Runtime/Api/Parties/PartyRestriction.cs +2 -2
  68. package/Common/Runtime/Api/Parties/PartyService.cs +2 -2
  69. package/Common/Runtime/Api/Parties/Requests/CreatePartyRequest.cs +2 -2
  70. package/Common/Runtime/Api/Parties/Requests/PartyQueryResponse.cs +2 -2
  71. package/Common/Runtime/Api/Parties/Requests/PlayerRequest.cs +2 -2
  72. package/Common/Runtime/Api/Parties/Requests/UpdatePartyRequest.cs +2 -2
  73. package/Common/Runtime/Api/Payments/IPaymentsApi.cs +2 -2
  74. package/Common/Runtime/Api/Payments/PaymentsApi.cs +2 -2
  75. package/Common/Runtime/Api/Presence/IPresenceApi.cs +2 -2
  76. package/Common/Runtime/Api/Presence/PresenceService.cs +2 -2
  77. package/Common/Runtime/Api/Push/IPushApi.cs +2 -2
  78. package/Common/Runtime/Api/QueryBuilder.cs +2 -2
  79. package/Common/Runtime/Api/Realms/IAliasService.cs +2 -2
  80. package/Common/Runtime/Api/Realms/IRealmApi.cs +2 -2
  81. package/Common/Runtime/Api/Realms/RealmService.cs +2 -2
  82. package/Common/Runtime/Api/SignedRequesterHelper.cs +2 -2
  83. package/Common/Runtime/Api/Social/ISocialApi.cs +2 -2
  84. package/Common/Runtime/Api/Social/SocialApi.cs +2 -2
  85. package/Common/Runtime/Api/Stats/AbsStatsApi.cs +2 -2
  86. package/Common/Runtime/Api/Stats/IStatsApi.cs +2 -2
  87. package/Common/Runtime/Api/Stats/StatsAccessType.cs +2 -2
  88. package/Common/Runtime/Api/Stats/StatsApiHelper.cs +2 -2
  89. package/Common/Runtime/Api/Stats/StatsDomainType.cs +2 -2
  90. package/Common/Runtime/Api/Tournaments/ITournamentApi.cs +2 -2
  91. package/Common/Runtime/Api/Tournaments/TournamentApi.cs +2 -2
  92. package/Common/Runtime/BeamCli/CliContractTypeAttribute.cs +2 -2
  93. package/Common/Runtime/BeamCli/CliOtelData.cs +2 -2
  94. package/Common/Runtime/BeamCli/Contracts/CliLogMessage.cs +2 -2
  95. package/Common/Runtime/BeamCli/Contracts/CollectorStatus.cs +2 -2
  96. package/Common/Runtime/BeamCli/Contracts/Constants.cs +2 -2
  97. package/Common/Runtime/BeamCli/Contracts/ContentService/AutoSnapshotActionType.cs +2 -2
  98. package/Common/Runtime/BeamCli/Contracts/ContentService/AutoSnapshotType.cs +2 -2
  99. package/Common/Runtime/BeamCli/Contracts/ContentService/ContentSnapshotType.cs +2 -2
  100. package/Common/Runtime/BeamCli/Contracts/ContentService/ContentStatus.cs +2 -2
  101. package/Common/Runtime/BeamCli/Contracts/ContentService/LocalContentManifest.cs +2 -2
  102. package/Common/Runtime/BeamCli/Contracts/ContentService/LocalContentManifestEntry.cs +2 -2
  103. package/Common/Runtime/BeamCli/Contracts/ContentService/ManifestAuthor.cs +2 -2
  104. package/Common/Runtime/BeamCli/Contracts/ContentService/ManifestProjectData.cs +2 -2
  105. package/Common/Runtime/BeamCli/Contracts/ContentService/TagStatus.cs +2 -2
  106. package/Common/Runtime/BeamCli/Contracts/EnvironmentVersionData.cs +2 -2
  107. package/Common/Runtime/BeamCli/Contracts/GenerateEnvOutput.cs +2 -2
  108. package/Common/Runtime/BeamCli/Contracts/ServiceInfo.cs +2 -2
  109. package/Common/Runtime/BeamCli/ErrorOutput.cs +2 -2
  110. package/Common/Runtime/BeamCli/IBeamCommand.cs +2 -2
  111. package/Common/Runtime/BeamCli/Reporting.cs +2 -2
  112. package/Common/Runtime/BeamCli/ServiceInfoHelper.cs +2 -2
  113. package/Common/Runtime/BeamGenerateSchemaAttribute.cs +2 -2
  114. package/Common/Runtime/BeamableColorUtil.cs +2 -2
  115. package/Common/Runtime/BeamableEnumExtensions.cs +2 -2
  116. package/Common/Runtime/BeamableTaskExtensions.cs +2 -2
  117. package/Common/Runtime/Collections/ConcurrentBag.cs +2 -2
  118. package/Common/Runtime/Collections/ConcurrentDictionary.cs +2 -2
  119. package/Common/Runtime/Constants/Constants.cs +2 -2
  120. package/Common/Runtime/Constants/Implementations/ArchiveConstants.cs +2 -2
  121. package/Common/Runtime/Constants/Implementations/ConfigConstants.cs +2 -2
  122. package/Common/Runtime/Constants/Implementations/ContentConstants.cs +2 -2
  123. package/Common/Runtime/Constants/Implementations/ContentManagerConstants.cs +2 -2
  124. package/Common/Runtime/Constants/Implementations/CronConstants.cs +2 -2
  125. package/Common/Runtime/Constants/Implementations/DockerConstants.cs +2 -2
  126. package/Common/Runtime/Constants/Implementations/EnvironmentConstants.cs +2 -2
  127. package/Common/Runtime/Constants/Implementations/LoginBaseConstants.cs +2 -2
  128. package/Common/Runtime/Constants/Implementations/MigrationConstants.cs +2 -2
  129. package/Common/Runtime/Constants/Implementations/NotificationConstants.cs +2 -2
  130. package/Common/Runtime/Constants/Implementations/OtelConstants.cs +2 -2
  131. package/Common/Runtime/Constants/Implementations/PortalExtensionConstants.cs +2 -2
  132. package/Common/Runtime/Constants/Implementations/RequesterConstants.cs +2 -2
  133. package/Common/Runtime/Constants/Implementations/SchedulesConstants.cs +2 -2
  134. package/Common/Runtime/Constants/Implementations/ServiceConstants.cs +2 -2
  135. package/Common/Runtime/Constants/Implementations/SpewConstants.cs +2 -2
  136. package/Common/Runtime/Constants/Implementations/TestingToolConstants.cs +2 -2
  137. package/Common/Runtime/Constants/Implementations/ToolbarConstants.cs +2 -2
  138. package/Common/Runtime/Constants/Implementations/ToolboxConstants.cs +2 -2
  139. package/Common/Runtime/Constants/Implementations/TooltipConstants.cs +2 -2
  140. package/Common/Runtime/Content/ClientContentSerializer.cs +2 -2
  141. package/Common/Runtime/Content/ClientManifest.cs +2 -2
  142. package/Common/Runtime/Content/ClientPermissions.cs +2 -2
  143. package/Common/Runtime/Content/ContentCorruptedException.cs +2 -2
  144. package/Common/Runtime/Content/ContentDataInfo.cs +2 -2
  145. package/Common/Runtime/Content/ContentDeserializationException.cs +2 -2
  146. package/Common/Runtime/Content/ContentFieldAttribute.cs +2 -2
  147. package/Common/Runtime/Content/ContentFilterType.cs +2 -2
  148. package/Common/Runtime/Content/ContentNotFoundException.cs +2 -2
  149. package/Common/Runtime/Content/ContentObject.cs +2 -2
  150. package/Common/Runtime/Content/ContentQuery.cs +2 -2
  151. package/Common/Runtime/Content/ContentQueryExtensions.cs +2 -2
  152. package/Common/Runtime/Content/ContentRef.cs +2 -2
  153. package/Common/Runtime/Content/ContentSerializer.cs +2 -2
  154. package/Common/Runtime/Content/ContentTypeAttribute.cs +2 -2
  155. package/Common/Runtime/Content/ContentTypeReflectionCache.cs +2 -2
  156. package/Common/Runtime/Content/ContentVisibility.cs +2 -2
  157. package/Common/Runtime/Content/Federation.cs +2 -2
  158. package/Common/Runtime/Content/IContentObject.cs +2 -2
  159. package/Common/Runtime/Content/IContentService.cs +2 -2
  160. package/Common/Runtime/Content/IIgnoreSerializationCallbacks.cs +2 -2
  161. package/Common/Runtime/Content/IgnoreContentFieldAttribute.cs +2 -2
  162. package/Common/Runtime/Content/Optionals.cs +2 -2
  163. package/Common/Runtime/Content/PropertyAttributes/FilePathSelectorAttribute.cs +2 -2
  164. package/Common/Runtime/Content/PropertyAttributes/HideUnlessServerPackageInstalled.cs +2 -2
  165. package/Common/Runtime/Content/PropertyAttributes/ReadonlyIfAttribute.cs +2 -2
  166. package/Common/Runtime/Content/PropertyAttributes/ShowOnlyAttribute.cs +2 -2
  167. package/Common/Runtime/Content/RenderAsRefAttribute.cs +2 -2
  168. package/Common/Runtime/Content/SerializableDictionary.cs +2 -2
  169. package/Common/Runtime/Content/Utility/DateUtility.cs +2 -2
  170. package/Common/Runtime/Content/Validation/AggregateContentValidationException.cs +2 -2
  171. package/Common/Runtime/Content/Validation/CannotBeBlank.cs +2 -2
  172. package/Common/Runtime/Content/Validation/CannotBeEmpty.cs +2 -2
  173. package/Common/Runtime/Content/Validation/ContentValidationException.cs +2 -2
  174. package/Common/Runtime/Content/Validation/FederationMustBeValid.cs +2 -2
  175. package/Common/Runtime/Content/Validation/MustBeComparatorString.cs +2 -2
  176. package/Common/Runtime/Content/Validation/MustBeCurrency.cs +2 -2
  177. package/Common/Runtime/Content/Validation/MustBeCurrencyOrItem.cs +2 -2
  178. package/Common/Runtime/Content/Validation/MustBeDateString.cs +2 -2
  179. package/Common/Runtime/Content/Validation/MustBeItem.cs +2 -2
  180. package/Common/Runtime/Content/Validation/MustBeLeaderboard.cs +2 -2
  181. package/Common/Runtime/Content/Validation/MustBeNonDefault.cs +2 -2
  182. package/Common/Runtime/Content/Validation/MustBeNonNegative.cs +2 -2
  183. package/Common/Runtime/Content/Validation/MustBeOneOf.cs +2 -2
  184. package/Common/Runtime/Content/Validation/MustBePositive.cs +2 -2
  185. package/Common/Runtime/Content/Validation/MustBeSlugString.cs +2 -2
  186. package/Common/Runtime/Content/Validation/MustBeTimeSpanDuration.cs +2 -2
  187. package/Common/Runtime/Content/Validation/MustBeValidCron.cs +2 -2
  188. package/Common/Runtime/Content/Validation/MustContain.cs +2 -2
  189. package/Common/Runtime/Content/Validation/MustReferenceContent.cs +2 -80
  190. package/Common/Runtime/Content/Validation/RouteParametersMustBeValid.cs +2 -2
  191. package/Common/Runtime/Content/Validation/ServiceRouteMustBeValid.cs +2 -2
  192. package/Common/Runtime/Content/Validation/TimeSpanDisplayAttribute.cs +2 -2
  193. package/Common/Runtime/Content/Validation/ValidationAttribute.cs +2 -2
  194. package/Common/Runtime/Content/Validation/ValidationContext.cs +2 -2
  195. package/Common/Runtime/CronExpression/CronLocale.cs +2 -2
  196. package/Common/Runtime/CronExpression/ErrorData.cs +2 -2
  197. package/Common/Runtime/CronExpression/ExpressionParser.cs +2 -2
  198. package/Common/Runtime/CronExpression/Options.cs +2 -2
  199. package/Common/Runtime/Debug.cs +2 -2
  200. package/Common/Runtime/DefaultQuery.cs +2 -2
  201. package/Common/Runtime/Dependencies/DependencyBuilder.cs +2 -2
  202. package/Common/Runtime/Dependencies/DependencyProvider.cs +2 -2
  203. package/Common/Runtime/Dependencies/Exceptions.cs +2 -2
  204. package/Common/Runtime/Dependencies/IDependencyList.cs +2 -2
  205. package/Common/Runtime/Dependencies/IDependencyNameProvider.cs +2 -2
  206. package/Common/Runtime/Dependencies/RegisterBeamableDependenciesAttribute.cs +2 -2
  207. package/Common/Runtime/Dependencies/ServiceStorage.cs +2 -2
  208. package/Common/Runtime/Dependencies/Utils.cs +2 -2
  209. package/Common/Runtime/DocUtils.cs +2 -2
  210. package/Common/Runtime/Environment/PackageVersion.cs +2 -2
  211. package/Common/Runtime/Federation/FederatedGameServer.cs +2 -2
  212. package/Common/Runtime/Federation/FederatedInventory.cs +2 -2
  213. package/Common/Runtime/Federation/FederatedLogin.cs +2 -2
  214. package/Common/Runtime/Federation/FederatedPlayerInit.cs +2 -2
  215. package/Common/Runtime/Federation/Federation.cs +2 -2
  216. package/Common/Runtime/IRuntimeConfigProvider.cs +2 -2
  217. package/Common/Runtime/ISearchableElement.cs +2 -2
  218. package/Common/Runtime/JsonSerializable/DeleteStream.cs +2 -2
  219. package/Common/Runtime/JsonSerializable/DiffStream.cs +2 -2
  220. package/Common/Runtime/JsonSerializable/JsonData.cs +2 -2
  221. package/Common/Runtime/JsonSerializable/JsonSaveStream.cs +2 -2
  222. package/Common/Runtime/JsonSerializable/JsonSerializable.cs +2 -2
  223. package/Common/Runtime/JsonSerializable/LoadStream.cs +2 -2
  224. package/Common/Runtime/JsonSerializable/MessagePackStream.cs +2 -2
  225. package/Common/Runtime/JsonSerializable/SaveStream.cs +2 -2
  226. package/Common/Runtime/JsonSerializable/TypeLookupFactory.cs +2 -2
  227. package/Common/Runtime/Modules/Announcements/AnnouncementApiContent.cs +2 -2
  228. package/Common/Runtime/Modules/Announcements/AnnouncementContent.cs +2 -2
  229. package/Common/Runtime/Modules/Announcements/AnnouncementRef.cs +2 -2
  230. package/Common/Runtime/Modules/Calendars/CalendarContent.cs +2 -2
  231. package/Common/Runtime/Modules/Calendars/CalendarRef.cs +2 -2
  232. package/Common/Runtime/Modules/Groups/GroupDonationContentRef.cs +2 -2
  233. package/Common/Runtime/Modules/Groups/GroupDonationsContent.cs +2 -2
  234. package/Common/Runtime/Modules/Inventory/CurrencyContent.cs +2 -2
  235. package/Common/Runtime/Modules/Inventory/CurrencyRef.cs +2 -2
  236. package/Common/Runtime/Modules/Inventory/ItemContent.cs +2 -2
  237. package/Common/Runtime/Modules/Inventory/ItemRef.cs +2 -2
  238. package/Common/Runtime/Modules/Inventory/VipContent.cs +2 -2
  239. package/Common/Runtime/Modules/Leaderboards/LeaderboardContent.cs +2 -2
  240. package/Common/Runtime/Modules/Leaderboards/LeaderboardRef.cs +2 -2
  241. package/Common/Runtime/Modules/SharedContent/ApiContent.cs +2 -2
  242. package/Common/Runtime/Modules/SharedContent/EmailContent.cs +2 -2
  243. package/Common/Runtime/Modules/SharedContent/EventContent.cs +2 -2
  244. package/Common/Runtime/Modules/SharedContent/PlayerReward.cs +2 -2
  245. package/Common/Runtime/Modules/SharedContent/ScheduleDefinition.cs +2 -2
  246. package/Common/Runtime/Modules/SharedContent/ScheduleExtensions.cs +2 -2
  247. package/Common/Runtime/Modules/SharedContent/SimGameType.cs +2 -2
  248. package/Common/Runtime/Modules/Shop/ListingContent.cs +2 -2
  249. package/Common/Runtime/Modules/Shop/ListingLink.cs +2 -2
  250. package/Common/Runtime/Modules/Shop/ListingRef.cs +2 -2
  251. package/Common/Runtime/Modules/Shop/SKUContent.cs +2 -2
  252. package/Common/Runtime/Modules/Shop/SKURef.cs +2 -2
  253. package/Common/Runtime/Modules/Shop/StoreContent.cs +2 -2
  254. package/Common/Runtime/Modules/Shop/StoreRef.cs +2 -2
  255. package/Common/Runtime/Modules/Steam/ISteamService.cs +2 -2
  256. package/Common/Runtime/Modules/Tournaments/TournamentColorConstants.cs +2 -2
  257. package/Common/Runtime/Modules/Tournaments/TournamentContent.cs +2 -2
  258. package/Common/Runtime/ObjectExtensions.cs +2 -2
  259. package/Common/Runtime/OpenApi/AccountsBasic.gs.cs +2 -2
  260. package/Common/Runtime/OpenApi/AccountsBasicCommon.gs.cs +2 -2
  261. package/Common/Runtime/OpenApi/AccountsObject.gs.cs +2 -2
  262. package/Common/Runtime/OpenApi/AnnouncementsBasic.gs.cs +2 -2
  263. package/Common/Runtime/OpenApi/AnnouncementsBasicCommon.gs.cs +2 -2
  264. package/Common/Runtime/OpenApi/AnnouncementsObject.gs.cs +2 -2
  265. package/Common/Runtime/OpenApi/AuthBasic.gs.cs +2 -2
  266. package/Common/Runtime/OpenApi/AuthBasicCommon.gs.cs +2 -2
  267. package/Common/Runtime/OpenApi/BeamAuth.gs.cs +2 -2
  268. package/Common/Runtime/OpenApi/BeamAuthCommon.gs.cs +2 -2
  269. package/Common/Runtime/OpenApi/BeamBeamo.gs.cs +2 -2
  270. package/Common/Runtime/OpenApi/BeamBeamoCommon.gs.cs +2 -2
  271. package/Common/Runtime/OpenApi/BeamBeamootel.gs.cs +2 -2
  272. package/Common/Runtime/OpenApi/BeamBeamootelCommon.gs.cs +2 -2
  273. package/Common/Runtime/OpenApi/BeamBilling.gs.cs +2 -2
  274. package/Common/Runtime/OpenApi/BeamBillingCommon.gs.cs +2 -2
  275. package/Common/Runtime/OpenApi/BeamCustomer.gs.cs +2 -2
  276. package/Common/Runtime/OpenApi/BeamCustomerCommon.gs.cs +2 -2
  277. package/Common/Runtime/OpenApi/BeamLobby.gs.cs +2 -2
  278. package/Common/Runtime/OpenApi/BeamLobbyCommon.gs.cs +2 -2
  279. package/Common/Runtime/OpenApi/BeamMailbox.gs.cs +2 -2
  280. package/Common/Runtime/OpenApi/BeamMailboxCommon.gs.cs +2 -2
  281. package/Common/Runtime/OpenApi/BeamMatchmaking.gs.cs +2 -2
  282. package/Common/Runtime/OpenApi/BeamMatchmakingCommon.gs.cs +2 -2
  283. package/Common/Runtime/OpenApi/BeamParty.gs.cs +2 -2
  284. package/Common/Runtime/OpenApi/BeamPartyCommon.gs.cs +2 -2
  285. package/Common/Runtime/OpenApi/BeamPlayer.gs.cs +2 -2
  286. package/Common/Runtime/OpenApi/BeamPlayerCommon.gs.cs +2 -2
  287. package/Common/Runtime/OpenApi/BeamPlayerlobby.gs.cs +2 -2
  288. package/Common/Runtime/OpenApi/BeamPlayerlobbyCommon.gs.cs +2 -2
  289. package/Common/Runtime/OpenApi/BeamPlayerparty.gs.cs +2 -2
  290. package/Common/Runtime/OpenApi/BeamPlayerpartyCommon.gs.cs +2 -2
  291. package/Common/Runtime/OpenApi/BeamPlayersession.gs.cs +2 -2
  292. package/Common/Runtime/OpenApi/BeamPlayersessionCommon.gs.cs +2 -2
  293. package/Common/Runtime/OpenApi/BeamPlayerstats.gs.cs +2 -2
  294. package/Common/Runtime/OpenApi/BeamPlayerstatsCommon.gs.cs +2 -2
  295. package/Common/Runtime/OpenApi/BeamPlayerticket.gs.cs +2 -2
  296. package/Common/Runtime/OpenApi/BeamPlayerticketCommon.gs.cs +2 -2
  297. package/Common/Runtime/OpenApi/BeamPresence.gs.cs +2 -2
  298. package/Common/Runtime/OpenApi/BeamPresenceCommon.gs.cs +2 -2
  299. package/Common/Runtime/OpenApi/BeamRealmsecrets.gs.cs +2 -2
  300. package/Common/Runtime/OpenApi/BeamRealmsecretsCommon.gs.cs +2 -2
  301. package/Common/Runtime/OpenApi/BeamScheduler.gs.cs +2 -2
  302. package/Common/Runtime/OpenApi/BeamSchedulerCommon.gs.cs +2 -2
  303. package/Common/Runtime/OpenApi/BeamSession.gs.cs +2 -2
  304. package/Common/Runtime/OpenApi/BeamSessionCommon.gs.cs +2 -2
  305. package/Common/Runtime/OpenApi/BeamStats.gs.cs +2 -2
  306. package/Common/Runtime/OpenApi/BeamStatsCommon.gs.cs +2 -2
  307. package/Common/Runtime/OpenApi/BeamoBasic.gs.cs +2 -2
  308. package/Common/Runtime/OpenApi/BeamoBasicCommon.gs.cs +2 -2
  309. package/Common/Runtime/OpenApi/CalendarsObject.gs.cs +2 -2
  310. package/Common/Runtime/OpenApi/CalendarsObjectCommon.gs.cs +2 -2
  311. package/Common/Runtime/OpenApi/CloudsavingBasic.gs.cs +2 -2
  312. package/Common/Runtime/OpenApi/CloudsavingBasicCommon.gs.cs +2 -2
  313. package/Common/Runtime/OpenApi/CommerceBasic.gs.cs +2 -2
  314. package/Common/Runtime/OpenApi/CommerceBasicCommon.gs.cs +2 -2
  315. package/Common/Runtime/OpenApi/CommerceObject.gs.cs +2 -2
  316. package/Common/Runtime/OpenApi/ContentBasic.gs.cs +2 -2
  317. package/Common/Runtime/OpenApi/ContentBasicCommon.gs.cs +2 -2
  318. package/Common/Runtime/OpenApi/Event-playersObject.gs.cs +2 -2
  319. package/Common/Runtime/OpenApi/Event-playersObjectCommon.gs.cs +2 -2
  320. package/Common/Runtime/OpenApi/EventsBasic.gs.cs +2 -2
  321. package/Common/Runtime/OpenApi/EventsBasicCommon.gs.cs +2 -2
  322. package/Common/Runtime/OpenApi/EventsObject.gs.cs +2 -2
  323. package/Common/Runtime/OpenApi/Group-usersObject.gs.cs +2 -2
  324. package/Common/Runtime/OpenApi/Group-usersObjectCommon.gs.cs +2 -2
  325. package/Common/Runtime/OpenApi/GroupsObject.gs.cs +2 -2
  326. package/Common/Runtime/OpenApi/GroupsObjectCommon.gs.cs +2 -2
  327. package/Common/Runtime/OpenApi/InventoryBasic.gs.cs +2 -2
  328. package/Common/Runtime/OpenApi/InventoryBasicCommon.gs.cs +2 -2
  329. package/Common/Runtime/OpenApi/InventoryObject.gs.cs +2 -2
  330. package/Common/Runtime/OpenApi/LeaderboardsBasic.gs.cs +2 -2
  331. package/Common/Runtime/OpenApi/LeaderboardsBasicCommon.gs.cs +2 -2
  332. package/Common/Runtime/OpenApi/LeaderboardsObject.gs.cs +2 -2
  333. package/Common/Runtime/OpenApi/MailBasic.gs.cs +2 -2
  334. package/Common/Runtime/OpenApi/MailBasicCommon.gs.cs +2 -2
  335. package/Common/Runtime/OpenApi/MailObject.gs.cs +2 -2
  336. package/Common/Runtime/OpenApi/Models.gs.cs +2 -2
  337. package/Common/Runtime/OpenApi/NotificationBasic.gs.cs +2 -2
  338. package/Common/Runtime/OpenApi/NotificationBasicCommon.gs.cs +2 -2
  339. package/Common/Runtime/OpenApi/PaymentsBasic.gs.cs +2 -2
  340. package/Common/Runtime/OpenApi/PaymentsBasicCommon.gs.cs +2 -2
  341. package/Common/Runtime/OpenApi/PaymentsObject.gs.cs +2 -2
  342. package/Common/Runtime/OpenApi/PushBasic.gs.cs +2 -2
  343. package/Common/Runtime/OpenApi/PushBasicCommon.gs.cs +2 -2
  344. package/Common/Runtime/OpenApi/RealmsBasic.gs.cs +2 -2
  345. package/Common/Runtime/OpenApi/RealmsBasicCommon.gs.cs +2 -2
  346. package/Common/Runtime/OpenApi/SessionBasic.gs.cs +2 -2
  347. package/Common/Runtime/OpenApi/SessionBasicCommon.gs.cs +2 -2
  348. package/Common/Runtime/OpenApi/SocialBasic.gs.cs +2 -2
  349. package/Common/Runtime/OpenApi/SocialBasicCommon.gs.cs +2 -2
  350. package/Common/Runtime/OpenApi/StatsBasic.gs.cs +2 -2
  351. package/Common/Runtime/OpenApi/StatsBasicCommon.gs.cs +2 -2
  352. package/Common/Runtime/OpenApi/StatsObject.gs.cs +2 -2
  353. package/Common/Runtime/OpenApi/TournamentsBasic.gs.cs +2 -2
  354. package/Common/Runtime/OpenApi/TournamentsBasicCommon.gs.cs +2 -2
  355. package/Common/Runtime/OpenApi/TournamentsObject.gs.cs +2 -2
  356. package/Common/Runtime/OpenApi/TrialsBasic.gs.cs +2 -2
  357. package/Common/Runtime/OpenApi/TrialsBasicCommon.gs.cs +2 -2
  358. package/Common/Runtime/OpenApiExtensions/BeamoExtensions.cs +2 -2
  359. package/Common/Runtime/OpenApiExtensions/LegacyConverterExtensions.cs +2 -2
  360. package/Common/Runtime/OpenApiSystem.cs +2 -2
  361. package/Common/Runtime/Player/Lazy.cs +2 -2
  362. package/Common/Runtime/Player/Observables.cs +2 -2
  363. package/Common/Runtime/Pooling/ClassPool.cs +2 -2
  364. package/Common/Runtime/Pooling/StringBuilderPool.cs +2 -2
  365. package/Common/Runtime/Promise.cs +2 -2
  366. package/Common/Runtime/ReflectionCache/BeamContextSystemAttribute.cs +2 -2
  367. package/Common/Runtime/ReflectionCache/INamingAttribute.cs +2 -2
  368. package/Common/Runtime/ReflectionCache/IReflectionAttribute.cs +2 -2
  369. package/Common/Runtime/ReflectionCache/PreserveAttribute.cs +2 -2
  370. package/Common/Runtime/ReflectionCache/ReflectionCache.cs +2 -2
  371. package/Common/Runtime/ReflectionCache/ReflectionCache_Attributes.cs +2 -2
  372. package/Common/Runtime/ReflectionCache/ReflectionCache_BaseTypes.cs +2 -2
  373. package/Common/Runtime/ReflectionCache/ReflectionCache_SignatureMatching.cs +2 -2
  374. package/Common/Runtime/Scheduler/BeamScheduler.cs +2 -2
  375. package/Common/Runtime/Scheduler/Cron.cs +2 -2
  376. package/Common/Runtime/Scheduler/CronValidation.cs +2 -2
  377. package/Common/Runtime/Semantics/BeamAccountId.cs +2 -2
  378. package/Common/Runtime/Semantics/BeamCid.cs +2 -2
  379. package/Common/Runtime/Semantics/BeamContentId.cs +2 -2
  380. package/Common/Runtime/Semantics/BeamContentManifestId.cs +2 -2
  381. package/Common/Runtime/Semantics/BeamGamerTag.cs +2 -2
  382. package/Common/Runtime/Semantics/BeamPid.cs +2 -2
  383. package/Common/Runtime/Semantics/BeamStats.cs +2 -2
  384. package/Common/Runtime/Semantics/IBeamSemanticType.cs +2 -2
  385. package/Common/Runtime/Semantics/ServiceName.cs +2 -2
  386. package/Common/Runtime/SmallerJSON/IRawJsonProvider.cs +2 -2
  387. package/Common/Runtime/SmallerJSON/SmallerJSON.ArrayDict.cs +2 -2
  388. package/Common/Runtime/SmallerJSON/SmallerJSON.FromString.cs +2 -2
  389. package/Common/Runtime/SmallerJSON/SmallerJSON.cs +2 -2
  390. package/Common/Runtime/Spew/Logger.cs +2 -2
  391. package/Common/Runtime/Spew/SpewLoggerAttribute.cs +2 -2
  392. package/Common/Runtime/Trie.cs +2 -2
  393. package/Common/Runtime/TypeExtensions.cs +2 -2
  394. package/Common/Runtime/Util/BeamAssemblyVersionUtil.cs +2 -2
  395. package/Common/Runtime/Util/BeamFileUtil.cs +2 -2
  396. package/Common/Runtime/Util/DocsPageHelper.cs +2 -2
  397. package/Common/Runtime/Util/NaturalStringComparer.cs +2 -2
  398. package/Editor/Modules/Content/ContentPropertyDrawer.cs +231 -83
  399. package/Editor/Modules/Content/ContentValidationPropertyDrawer.cs +59 -1
  400. package/Runtime/Core/Platform/SDK/AccessTokenStorage.cs +1 -1
  401. package/Runtime/Environment/Resources/env-default.json +1 -1
  402. package/Runtime/Environment/Resources/versions-default.json +1 -1
  403. package/Runtime/Player/PlayerAccounts.cs +258 -16
  404. package/Tests/Runtime/Beamable/Platform/AccessTokenStorageTests.cs +54 -0
  405. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
- // this file was copied from nuget package Beamable.Common@7.2.0
2
- // https://www.nuget.org/packages/Beamable.Common/7.2.0
1
+ // this file was copied from nuget package Beamable.Common@7.2.1
2
+ // https://www.nuget.org/packages/Beamable.Common/7.2.1
3
3
 
4
4
  using System;
5
5
  using System.Text.RegularExpressions;
@@ -1,5 +1,5 @@
1
- // this file was copied from nuget package Beamable.Common@7.2.0
2
- // https://www.nuget.org/packages/Beamable.Common/7.2.0
1
+ // this file was copied from nuget package Beamable.Common@7.2.1
2
+ // https://www.nuget.org/packages/Beamable.Common/7.2.1
3
3
 
4
4
  using Beamable.Common.BeamCli;
5
5
  using System;
@@ -1,5 +1,5 @@
1
- // this file was copied from nuget package Beamable.Common@7.2.0
2
- // https://www.nuget.org/packages/Beamable.Common/7.2.0
1
+ // this file was copied from nuget package Beamable.Common@7.2.1
2
+ // https://www.nuget.org/packages/Beamable.Common/7.2.1
3
3
 
4
4
  using System;
5
5
  using Beamable.Common.BeamCli;
@@ -1,5 +1,5 @@
1
- // this file was copied from nuget package Beamable.Common@7.2.0
2
- // https://www.nuget.org/packages/Beamable.Common/7.2.0
1
+ // this file was copied from nuget package Beamable.Common@7.2.1
2
+ // https://www.nuget.org/packages/Beamable.Common/7.2.1
3
3
 
4
4
  using System;
5
5
  using Beamable.Common.BeamCli;
@@ -1,5 +1,5 @@
1
- // this file was copied from nuget package Beamable.Common@7.2.0
2
- // https://www.nuget.org/packages/Beamable.Common/7.2.0
1
+ // this file was copied from nuget package Beamable.Common@7.2.1
2
+ // https://www.nuget.org/packages/Beamable.Common/7.2.1
3
3
 
4
4
  using System;
5
5
  using Beamable.Common.BeamCli;
@@ -1,5 +1,5 @@
1
- // this file was copied from nuget package Beamable.Common@7.2.0
2
- // https://www.nuget.org/packages/Beamable.Common/7.2.0
1
+ // this file was copied from nuget package Beamable.Common@7.2.1
2
+ // https://www.nuget.org/packages/Beamable.Common/7.2.1
3
3
 
4
4
  using System;
5
5
  using Beamable.Common.BeamCli;
@@ -1,5 +1,5 @@
1
- // this file was copied from nuget package Beamable.Common@7.2.0
2
- // https://www.nuget.org/packages/Beamable.Common/7.2.0
1
+ // this file was copied from nuget package Beamable.Common@7.2.1
2
+ // https://www.nuget.org/packages/Beamable.Common/7.2.1
3
3
 
4
4
  using System;
5
5
  using Beamable.Common.BeamCli;
@@ -1,5 +1,5 @@
1
- // this file was copied from nuget package Beamable.Common@7.2.0
2
- // https://www.nuget.org/packages/Beamable.Common/7.2.0
1
+ // this file was copied from nuget package Beamable.Common@7.2.1
2
+ // https://www.nuget.org/packages/Beamable.Common/7.2.1
3
3
 
4
4
  using System;
5
5
  using Beamable.Common.Api.Stats;
@@ -1,5 +1,5 @@
1
- // this file was copied from nuget package Beamable.Common@7.2.0
2
- // https://www.nuget.org/packages/Beamable.Common/7.2.0
1
+ // this file was copied from nuget package Beamable.Common@7.2.1
2
+ // https://www.nuget.org/packages/Beamable.Common/7.2.1
3
3
 
4
4
  using Beamable.Serialization.SmallerJSON;
5
5
 
@@ -1,5 +1,5 @@
1
- // this file was copied from nuget package Beamable.Common@7.2.0
2
- // https://www.nuget.org/packages/Beamable.Common/7.2.0
1
+ // this file was copied from nuget package Beamable.Common@7.2.1
2
+ // https://www.nuget.org/packages/Beamable.Common/7.2.1
3
3
 
4
4
  using Beamable.Common.BeamCli;
5
5
  using System;
@@ -1,5 +1,5 @@
1
- // this file was copied from nuget package Beamable.Common@7.2.0
2
- // https://www.nuget.org/packages/Beamable.Common/7.2.0
1
+ // this file was copied from nuget package Beamable.Common@7.2.1
2
+ // https://www.nuget.org/packages/Beamable.Common/7.2.1
3
3
 
4
4
  namespace Beamable.Serialization.SmallerJSON
5
5
  {
@@ -1,5 +1,5 @@
1
- // this file was copied from nuget package Beamable.Common@7.2.0
2
- // https://www.nuget.org/packages/Beamable.Common/7.2.0
1
+ // this file was copied from nuget package Beamable.Common@7.2.1
2
+ // https://www.nuget.org/packages/Beamable.Common/7.2.1
3
3
 
4
4
  // Permission is hereby granted, free of charge, to any person obtaining
5
5
  // a copy of this software and associated documentation files (the
@@ -1,5 +1,5 @@
1
- // this file was copied from nuget package Beamable.Common@7.2.0
2
- // https://www.nuget.org/packages/Beamable.Common/7.2.0
1
+ // this file was copied from nuget package Beamable.Common@7.2.1
2
+ // https://www.nuget.org/packages/Beamable.Common/7.2.1
3
3
 
4
4
  /*
5
5
  * Simplified fork of MiniJSON optimized to minimize heap allocations
@@ -1,5 +1,5 @@
1
- // this file was copied from nuget package Beamable.Common@7.2.0
2
- // https://www.nuget.org/packages/Beamable.Common/7.2.0
1
+ // this file was copied from nuget package Beamable.Common@7.2.1
2
+ // https://www.nuget.org/packages/Beamable.Common/7.2.1
3
3
 
4
4
  /*
5
5
  * Simplified fork of MiniJSON optimized to minimize heap allocations
@@ -1,5 +1,5 @@
1
- // this file was copied from nuget package Beamable.Common@7.2.0
2
- // https://www.nuget.org/packages/Beamable.Common/7.2.0
1
+ // this file was copied from nuget package Beamable.Common@7.2.1
2
+ // https://www.nuget.org/packages/Beamable.Common/7.2.1
3
3
 
4
4
  //#define PREPEND_SPEW_METADATA
5
5
  // With PREPEND_SPEW_METADATA defined, all spew logs will have frame # and time prepended.
@@ -1,5 +1,5 @@
1
- // this file was copied from nuget package Beamable.Common@7.2.0
2
- // https://www.nuget.org/packages/Beamable.Common/7.2.0
1
+ // this file was copied from nuget package Beamable.Common@7.2.1
2
+ // https://www.nuget.org/packages/Beamable.Common/7.2.1
3
3
 
4
4
  using System;
5
5
  using System.Diagnostics;
@@ -1,5 +1,5 @@
1
- // this file was copied from nuget package Beamable.Common@7.2.0
2
- // https://www.nuget.org/packages/Beamable.Common/7.2.0
1
+ // this file was copied from nuget package Beamable.Common@7.2.1
2
+ // https://www.nuget.org/packages/Beamable.Common/7.2.1
3
3
 
4
4
  using System;
5
5
  using System.Collections.Generic;
@@ -1,5 +1,5 @@
1
- // this file was copied from nuget package Beamable.Common@7.2.0
2
- // https://www.nuget.org/packages/Beamable.Common/7.2.0
1
+ // this file was copied from nuget package Beamable.Common@7.2.1
2
+ // https://www.nuget.org/packages/Beamable.Common/7.2.1
3
3
 
4
4
 
5
5
  using System;
@@ -1,5 +1,5 @@
1
- // this file was copied from nuget package Beamable.Common@7.2.0
2
- // https://www.nuget.org/packages/Beamable.Common/7.2.0
1
+ // this file was copied from nuget package Beamable.Common@7.2.1
2
+ // https://www.nuget.org/packages/Beamable.Common/7.2.1
3
3
 
4
4
  using Beamable.Common.Spew;
5
5
  using System;
@@ -1,5 +1,5 @@
1
- // this file was copied from nuget package Beamable.Common@7.2.0
2
- // https://www.nuget.org/packages/Beamable.Common/7.2.0
1
+ // this file was copied from nuget package Beamable.Common@7.2.1
2
+ // https://www.nuget.org/packages/Beamable.Common/7.2.1
3
3
 
4
4
  using System;
5
5
  using System.IO;
@@ -1,5 +1,5 @@
1
- // this file was copied from nuget package Beamable.Common@7.2.0
2
- // https://www.nuget.org/packages/Beamable.Common/7.2.0
1
+ // this file was copied from nuget package Beamable.Common@7.2.1
2
+ // https://www.nuget.org/packages/Beamable.Common/7.2.1
3
3
 
4
4
  namespace Beamable.Common.Util
5
5
  {
@@ -1,5 +1,5 @@
1
- // this file was copied from nuget package Beamable.Common@7.2.0
2
- // https://www.nuget.org/packages/Beamable.Common/7.2.0
1
+ // this file was copied from nuget package Beamable.Common@7.2.1
2
+ // https://www.nuget.org/packages/Beamable.Common/7.2.1
3
3
 
4
4
  using System.Collections.Generic;
5
5
 
@@ -1,3 +1,4 @@
1
+ using Beamable.Common.BeamCli.Contracts;
1
2
  using Beamable.Common.Content;
2
3
  using System;
3
4
  using System.Collections.Generic;
@@ -188,75 +189,71 @@ namespace Beamable.Editor.Content
188
189
  }
189
190
  }
190
191
 
191
- public class ContentRefSearchWindow : EditorWindow, IDelayedActionWindow
192
+ /// <summary>
193
+ /// One selectable row in a content search popup.
194
+ /// </summary>
195
+ public struct ContentSearchOption
192
196
  {
193
- struct Option
194
- {
195
- public string DisplayName;
196
- public string DisplayNameLower;
197
- public string Id;
198
- }
197
+ public string DisplayName;
198
+ public string DisplayNameLower;
199
+ public string Id;
200
+ }
199
201
 
200
- public BaseContentRef FieldValue { get; set; }
202
+ /// <summary>
203
+ /// Base class for the searchable content-id dropdown popups. Owns the shared search bar, the
204
+ /// virtualized scroll list (only the rows intersecting the viewport are drawn, so it scales to
205
+ /// thousands of entries) and the selection/validation plumbing. Subclasses only supply the option
206
+ /// list and how a pick is written back. The windowing approach mirrors
207
+ /// <c>ContentWindow_ItemsPanel</c>.
208
+ /// </summary>
209
+ public abstract class ContentSearchWindowBase : EditorWindow, IDelayedActionWindow
210
+ {
201
211
  public SerializedProperty Property { get; set; }
202
- public FieldInfo FieldInfo { get; set; }
203
212
  public Object Object { get; set; }
204
- public GUIContent Label { get; set; }
213
+
214
+ protected readonly SearchData _searchData = new SearchData();
205
215
 
206
216
  private Vector2 _scrollPos;
207
217
  private string _searchString;
208
- private SearchData _searchData = new SearchData();
209
218
  private bool _initialized;
210
- private string _typeName;
211
219
  private GUIStyle _normalStyle, _activeStyle;
212
- private List<Option> _options;
213
- private Dictionary<string, Option> _idToOption;
220
+ private List<ContentSearchOption> _options;
221
+ private List<ContentSearchOption> _filtered;
222
+ private string _filterKey;
223
+ private bool _filterKeyValid;
214
224
  private int _selectedIndex;
215
225
  private Texture2D _highlightTexture;
216
226
  private Texture2D _activeTexture;
217
227
  public List<Action> delayedActions = new List<Action>();
218
- private const string SearchControlName = "contentRefSearchBar";
228
+
229
+ private const float ScrollBarWidth = 18f;
230
+ private const float ToolbarHeight = 30f;
231
+
232
+ /// <summary>Search field control name; unique per window type so focus is not shared.</summary>
233
+ protected abstract string SearchControlName { get; }
234
+
235
+ /// <summary>The full, unfiltered option list. Called once after Beamable is initialized.</summary>
236
+ protected abstract List<ContentSearchOption> BuildOptions();
237
+
238
+ /// <summary>The current value, used to pre-select / scroll a row into view on open.</summary>
239
+ protected abstract string CurrentId { get; }
240
+
241
+ /// <summary>Writes the chosen option into the backing property/object.</summary>
242
+ protected abstract void ApplySelection(ContentSearchOption option);
219
243
 
220
244
  public async void Init()
221
245
  {
222
- var referenceType = FieldValue.GetReferencedBaseType();
223
- var contentTypeReflectionCache = BeamEditor.GetReflectionSystem<ContentTypeReflectionCache>();
224
- _typeName = contentTypeReflectionCache.TypeToName(referenceType);
225
- var de = BeamEditorContext.Default;
226
- await de.InitializePromise;
227
-
228
- var contentEntries = de.CliContentService.GetContentsFromType(referenceType, true);
229
- _options = new List<Option>();
230
- _idToOption = new Dictionary<string, Option>();
231
- foreach (var content in contentEntries)
232
- {
233
- var displayName = content.FullId.Substring(_typeName.Length + 1);
234
- var option = new Option
235
- {
236
- Id = content.FullId,
237
- DisplayName = displayName,
238
- DisplayNameLower = displayName.ToLower()
239
- };
240
- _options.Add(option);
241
- _idToOption.Add(content.FullId, option);
242
- }
243
-
244
- var nullOption = new Option
245
- {
246
- DisplayName = "<none>",
247
- DisplayNameLower = "none",
248
- Id = null
249
- };
250
- _options.Insert(0, nullOption);
251
- _idToOption.Add("", nullOption);
246
+ await BeamEditorContext.Default.InitializePromise;
252
247
 
248
+ _options = BuildOptions();
253
249
 
254
- var currId = FieldValue.GetId();
250
+ var currId = CurrentId;
255
251
  _selectedIndex = 0;
256
252
  if (!string.IsNullOrEmpty(currId))
257
253
  {
258
- _selectedIndex = _options.FindIndex(o => currId.Equals(o.Id));
254
+ _selectedIndex = Mathf.Max(0, _options.FindIndex(o => currId.Equals(o.Id)));
259
255
  }
256
+ _scrollPos = new Vector2(0, _selectedIndex * EditorGUIUtility.singleLineHeight);
260
257
 
261
258
  _highlightTexture = MakeTex(1, 1, new Color(0, 0, 0, .1f));
262
259
  _activeTexture = MakeTex(1, 1, new Color(0, .5f, 1, .2f));
@@ -265,30 +262,36 @@ namespace Beamable.Editor.Content
265
262
  {
266
263
  normal = { background = _activeTexture },
267
264
  hover = { background = _highlightTexture },
268
- wordWrap = true
265
+ wordWrap = false
269
266
  };
270
267
 
271
268
  _normalStyle = new GUIStyle(GUI.skin.label)
272
269
  {
273
270
  hover = { background = _highlightTexture },
274
- wordWrap = true
271
+ wordWrap = false
275
272
  };
276
- _initialized = true;
277
273
 
274
+ // Repaint when the search text changes instead of every frame.
275
+ _searchData.onEndCheck = Repaint;
276
+
277
+ wantsMouseMove = true;
278
+ _initialized = true;
279
+ Repaint();
278
280
  }
279
- private Texture2D MakeTex(int width, int height, Color col)
280
- {
281
- Color[] pix = new Color[width * height];
282
281
 
283
- for (int i = 0; i < pix.Length; i++)
282
+ private static Texture2D MakeTex(int width, int height, Color col)
283
+ {
284
+ var pix = new Color[width * height];
285
+ for (var i = 0; i < pix.Length; i++)
284
286
  pix[i] = col;
285
287
 
286
- Texture2D result = new Texture2D(width, height);
288
+ var result = new Texture2D(width, height);
287
289
  result.SetPixels(pix);
288
290
  result.Apply();
289
291
 
290
292
  return result;
291
293
  }
294
+
292
295
  protected void OnGUI()
293
296
  {
294
297
  if (!_initialized)
@@ -297,49 +300,65 @@ namespace Beamable.Editor.Content
297
300
  return;
298
301
  }
299
302
 
300
- GUILayout.BeginHorizontal(GUI.skin.FindStyle("Toolbar"), GUILayout.Height(30));
303
+ GUILayout.BeginHorizontal(GUI.skin.FindStyle("Toolbar"), GUILayout.Height(ToolbarHeight));
301
304
  this.DrawSearchBar(_searchData, textFieldName: SearchControlName);
302
305
  _searchString = _searchData.searchText;
303
306
  GUI.FocusControl(SearchControlName);
304
307
  GUILayout.EndHorizontal();
305
308
 
306
- _scrollPos = EditorGUILayout.BeginScrollView(_scrollPos, GUILayout.Height(this.position.height - 30));
307
- var searchLower = _searchString?.ToLower() ?? "";
309
+ // Re-filter only when the search text actually changes, not on every repaint.
310
+ if (!_filterKeyValid || !string.Equals(_filterKey, _searchString, StringComparison.Ordinal))
311
+ {
312
+ _filterKey = _searchString;
313
+ _filterKeyValid = true;
314
+ if (string.IsNullOrEmpty(_searchString))
315
+ {
316
+ _filtered = _options;
317
+ }
318
+ else
319
+ {
320
+ var searchLower = _searchString.ToLower();
321
+ _filtered = _options.Where(o => o.DisplayNameLower.Contains(searchLower)).ToList();
322
+ }
323
+ }
324
+
325
+ var rowHeight = EditorGUIUtility.singleLineHeight;
326
+ var areaRect = GUILayoutUtility.GetRect(position.width, position.height - ToolbarHeight);
327
+ var totalHeight = _filtered.Count * rowHeight;
328
+ var contentRect = new Rect(0, 0, areaRect.width - ScrollBarWidth, totalHeight);
308
329
 
309
- var filteredOptions = _options.Where(option =>
310
- string.IsNullOrEmpty(_searchString) || option.DisplayNameLower.Contains(searchLower)).ToArray();
311
- var contents = filteredOptions.Select(option => new GUIContent(option.DisplayName)).ToList();
330
+ // Handle the scroll wheel manually so the popup does not reuse a stale scroll id.
331
+ if (Event.current.type == EventType.ScrollWheel && areaRect.Contains(Event.current.mousePosition))
332
+ {
333
+ _scrollPos.y = Mathf.Clamp(_scrollPos.y + Event.current.delta.y * 10f, 0,
334
+ Mathf.Max(0, totalHeight - areaRect.height));
335
+ Event.current.Use();
336
+ Repaint();
337
+ }
312
338
 
313
- var index = -1;
339
+ _scrollPos = GUI.BeginScrollView(areaRect, _scrollPos, contentRect, false, true);
314
340
 
315
- EditorGUI.BeginChangeCheck();
341
+ // Only draw the rows intersecting the viewport -> O(visible) instead of O(all options).
342
+ var first = Mathf.Max(0, Mathf.FloorToInt(_scrollPos.y / rowHeight));
343
+ var last = Mathf.Min(_filtered.Count - 1, first + Mathf.CeilToInt(areaRect.height / rowHeight) + 1);
316
344
 
317
- for (var i = 0; i < contents.Count; i++)
345
+ var clicked = -1;
346
+ for (var i = first; i <= last; i++)
318
347
  {
319
- var c = contents[i];
320
- var isSelected = _selectedIndex == i;
321
- var style = isSelected ? _activeStyle : _normalStyle;
322
-
323
- var clicked = GUILayout.Button(c, style, GUILayout.MaxWidth(position.width - 20));
324
- if (clicked)
348
+ var rowRect = new Rect(0, i * rowHeight, contentRect.width, rowHeight);
349
+ var style = i == _selectedIndex ? _activeStyle : _normalStyle;
350
+ if (GUI.Button(rowRect, _filtered[i].DisplayName, style))
325
351
  {
326
- index = i;
352
+ clicked = i;
327
353
  }
328
354
  }
329
355
 
330
- EditorGUILayout.EndScrollView();
356
+ GUI.EndScrollView();
331
357
 
332
- if (EditorGUI.EndChangeCheck())
358
+ if (clicked >= 0)
333
359
  {
334
- Undo.RecordObject(Object, "Change Content Ref");
335
- var selected = filteredOptions[index];
336
- var fieldValues = ContentRefPropertyDrawer.GetTargetObjectsOfProperty(Property);
337
- foreach (BaseContentRef fieldValue in fieldValues)
338
- {
339
- fieldValue.SetId(selected.Id);
340
- }
341
-
342
- Property.serializedObject.Update();
360
+ Undo.RecordObject(Object, "Change Content Reference");
361
+ ApplySelection(_filtered[clicked]);
343
362
  EditorUtility.SetDirty(Object);
344
363
 
345
364
  foreach (var targetObject in Property.serializedObject.targetObjects)
@@ -354,7 +373,12 @@ namespace Beamable.Editor.Content
354
373
  }
355
374
 
356
375
  Property.serializedObject.UpdateIfRequiredOrScript();
357
- Repaint(); // make gui reactive
376
+
377
+ // Reactive hover/selection without burning a repaint every frame.
378
+ if (Event.current.type == EventType.MouseMove)
379
+ {
380
+ Repaint();
381
+ }
358
382
 
359
383
  foreach (var act in delayedActions)
360
384
  {
@@ -369,4 +393,128 @@ namespace Beamable.Editor.Content
369
393
  }
370
394
  }
371
395
 
396
+ /// <summary>
397
+ /// Searchable dropdown popup for <see cref="BaseContentRef"/> fields.
398
+ /// </summary>
399
+ public class ContentRefSearchWindow : ContentSearchWindowBase
400
+ {
401
+ public BaseContentRef FieldValue { get; set; }
402
+ public FieldInfo FieldInfo { get; set; }
403
+ public GUIContent Label { get; set; }
404
+
405
+ protected override string SearchControlName => "contentRefSearchBar";
406
+
407
+ protected override string CurrentId => FieldValue.GetId();
408
+
409
+ protected override List<ContentSearchOption> BuildOptions()
410
+ {
411
+ var referenceType = FieldValue.GetReferencedBaseType();
412
+ var contentTypeReflectionCache = BeamEditor.GetReflectionSystem<ContentTypeReflectionCache>();
413
+ var typeName = contentTypeReflectionCache.TypeToName(referenceType);
414
+
415
+ var contentEntries = BeamEditorContext.Default.CliContentService.GetContentsFromType(referenceType, true);
416
+
417
+ var options = new List<ContentSearchOption>
418
+ {
419
+ new ContentSearchOption { DisplayName = "<none>", DisplayNameLower = "none", Id = null }
420
+ };
421
+ foreach (var content in contentEntries)
422
+ {
423
+ var displayName = content.FullId.Substring(typeName.Length + 1);
424
+ options.Add(new ContentSearchOption
425
+ {
426
+ Id = content.FullId,
427
+ DisplayName = displayName,
428
+ DisplayNameLower = displayName.ToLower()
429
+ });
430
+ }
431
+
432
+ return options;
433
+ }
434
+
435
+ protected override void ApplySelection(ContentSearchOption option)
436
+ {
437
+ var fieldValues = ContentRefPropertyDrawer.GetTargetObjectsOfProperty(Property);
438
+ foreach (BaseContentRef fieldValue in fieldValues)
439
+ {
440
+ fieldValue.SetId(option.Id);
441
+ }
442
+
443
+ Property.serializedObject.Update();
444
+ }
445
+ }
446
+
447
+ /// <summary>
448
+ /// Searchable dropdown popup for plain <see cref="string"/> content-id fields decorated with
449
+ /// <see cref="Beamable.Common.Content.Validation.MustReferenceContent"/>. Writes the selected id
450
+ /// straight into the string <see cref="SerializedProperty"/> instead of going through a
451
+ /// <see cref="BaseContentRef"/>.
452
+ /// </summary>
453
+ public class ContentStringSearchWindow : ContentSearchWindowBase
454
+ {
455
+ public Type[] AllowedTypes { get; set; }
456
+ public bool AllowNull { get; set; }
457
+
458
+ protected override string SearchControlName => "contentStringSearchBar";
459
+
460
+ protected override string CurrentId => Property.stringValue;
461
+
462
+ protected override List<ContentSearchOption> BuildOptions()
463
+ {
464
+ var de = BeamEditorContext.Default;
465
+
466
+ // Collect candidate manifest entries: union of AllowedTypes (incl. sub-types), or
467
+ // all content when no type constraint is supplied.
468
+ var entries = new List<LocalContentManifestEntry>();
469
+ if (AllowedTypes != null && AllowedTypes.Length > 0)
470
+ {
471
+ foreach (var type in AllowedTypes)
472
+ {
473
+ entries.AddRange(de.CliContentService.GetContentsFromType(type, true));
474
+ }
475
+ }
476
+ else
477
+ {
478
+ entries.AddRange(de.CliContentService.EntriesCache.Values);
479
+ }
480
+
481
+ var options = new List<ContentSearchOption>();
482
+ var seen = new HashSet<string>();
483
+ foreach (var content in entries)
484
+ {
485
+ if (string.IsNullOrEmpty(content.FullId) || !seen.Add(content.FullId))
486
+ {
487
+ continue;
488
+ }
489
+
490
+ options.Add(new ContentSearchOption
491
+ {
492
+ Id = content.FullId,
493
+ DisplayName = content.FullId,
494
+ DisplayNameLower = content.FullId.ToLower()
495
+ });
496
+ }
497
+
498
+ options.Sort((a, b) => string.CompareOrdinal(a.DisplayNameLower, b.DisplayNameLower));
499
+
500
+ if (AllowNull)
501
+ {
502
+ options.Insert(0, new ContentSearchOption
503
+ {
504
+ DisplayName = "<none>",
505
+ DisplayNameLower = "none",
506
+ Id = string.Empty
507
+ });
508
+ }
509
+
510
+ return options;
511
+ }
512
+
513
+ protected override void ApplySelection(ContentSearchOption option)
514
+ {
515
+ Property.stringValue = option.Id;
516
+ Property.serializedObject.ApplyModifiedProperties();
517
+ }
518
+ }
519
+
372
520
  }