@rbxts/replecs 0.1.0-alpha9-test5 → 0.2.0-cdtest.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.
@@ -163,8 +163,8 @@ export type MaskingController = {
163
163
 
164
164
  propagate_entity_addition: (self: MaskingController, entity: Entity) -> (),
165
165
 
166
- start_entity: (self: MaskingController, entity: Entity, filter: MemberFilter?) -> (),
167
- set_entity: (self: MaskingController, entity: Entity, filter: MemberFilter?) -> (),
166
+ start_entity: (self: MaskingController, entity: Entity, filter: GivenFilter?) -> (),
167
+ set_entity: (self: MaskingController, entity: Entity, filter: GivenFilter?) -> (),
168
168
  stop_entity: (self: MaskingController, entity: Entity) -> (),
169
169
  cleanup_entity: (self: MaskingController, entity: Entity) -> (),
170
170
 
@@ -173,14 +173,14 @@ export type MaskingController = {
173
173
  entity: Entity,
174
174
  component: Entity,
175
175
  component_type: number,
176
- filter: MemberFilter?
176
+ filter: GivenFilter?
177
177
  ) -> (),
178
178
  set_component: (
179
179
  self: MaskingController,
180
180
  entity: Entity,
181
181
  component: Entity,
182
182
  component_type: number,
183
- filter: MemberFilter?
183
+ filter: GivenFilter?
184
184
  ) -> (),
185
185
  stop_component: (self: MaskingController, entity: Entity, component: Entity, component_type: number) -> (),
186
186
 
@@ -235,7 +235,7 @@ end
235
235
  local function get_usable_filter(filter: (MemberFilter | any)?): MemberFilter?
236
236
  if filter then
237
237
  if type(filter) == "table" then
238
- return filter
238
+ return filter :: MemberFilter
239
239
  else
240
240
  return { [filter] = true }
241
241
  end
@@ -709,23 +709,24 @@ function masking_controller.move_component_storage(
709
709
  local component_added =
710
710
  get_component_index_entry(storage.changes.added_components, entity, component, component_type)
711
711
  if component_added then
712
+ remove_component_index_entry(target_storage.changes.added_components, entity, component, component_type)
712
713
  set_component_index_entry(target_storage.changes.added_components, entity, component, component_type, true)
713
714
  end
714
715
 
715
716
  local changes = storage.changes.changed[entity]
716
717
  if changes then
717
718
  local target_changes = get_or_set_changed(target_storage, entity)
718
- if component_type == COMPONENT_TYPES.component then
719
- target_changes.component[component] = changes.component[component]
719
+ if component_type == COMPONENT_TYPES.tag then
720
+ target_changes.tagged[component] = changes.tagged[component]
720
721
  target_changes.removed[component] = changes.removed[component]
721
722
 
722
- changes.component[component] = nil
723
+ changes.tagged[component] = nil
723
724
  changes.removed[component] = nil
724
- elseif component_type == COMPONENT_TYPES.tag then
725
- target_changes.tagged[component] = changes.tagged[component]
725
+ elseif component_type == COMPONENT_TYPES.component then
726
+ target_changes.component[component] = changes.component[component]
726
727
  target_changes.removed[component] = changes.removed[component]
727
728
 
728
- changes.tagged[component] = nil
729
+ changes.component[component] = nil
729
730
  changes.removed[component] = nil
730
731
  elseif component_type == COMPONENT_TYPES.pair then
731
732
  target_changes.pairs[component] = changes.pairs[component]
@@ -742,8 +743,6 @@ function masking_controller.move_component_storage(
742
743
  end
743
744
  end
744
745
 
745
- --todo: move changes
746
-
747
746
  return target_storage
748
747
  end
749
748
 
@@ -826,7 +825,6 @@ function masking_controller.register_stop_entity(masking: MaskingInternal, entit
826
825
  return
827
826
  end
828
827
  storage.deletions.entities[entity] = true
829
- storage.deletions_count += 1
830
828
  end
831
829
 
832
830
  function masking_controller.register_stop_component(
@@ -845,13 +843,11 @@ function masking_controller.register_stop_component(
845
843
  deletions = create_component_indexes() :: ComponentIndex<boolean>
846
844
  deletions[component_type][component] = true
847
845
  storage.deletions.components[entity] = deletions
848
- storage.deletions_count += 1
849
846
  else
850
847
  if deletions[component_type][component] then
851
848
  return
852
849
  end
853
850
  deletions[component_type][component] = true
854
- storage.deletions_count += 1
855
851
  end
856
852
  end
857
853
 
@@ -896,7 +892,6 @@ function masking_controller.unregister_stop_component(
896
892
  if deletions then
897
893
  if deletions[component_type][component] then
898
894
  deletions[component_type][component] = nil
899
- storage.deletions_count -= 1
900
895
  end
901
896
  end
902
897
  end
@@ -945,7 +940,6 @@ function masking_controller.update_entity_filter(
945
940
  if not lookup then
946
941
  lookup = masking.lookups.entities[entity]
947
942
  end
948
- local generator = generator :: MaskGenerator
949
943
  local current_storage = lookup.storage_group
950
944
 
951
945
  local new_storage = masking:move_entity_storage(entity, current_storage, generator.result)
@@ -1018,6 +1012,7 @@ function masking_controller.stop_entity(masking: MaskingInternal, entity: Entity
1018
1012
  component_storage.shared_with[entity] = nil
1019
1013
  component_storage.changes.added[entity] = nil
1020
1014
  component_storage.changes.changed[entity] = nil
1015
+ component_storage.changes.added_components[entity] = nil
1021
1016
 
1022
1017
  if postponed == nil then
1023
1018
  postponed = create_component_indexes() :: PostponedList
@@ -1040,6 +1035,7 @@ function masking_controller.stop_entity(masking: MaskingInternal, entity: Entity
1040
1035
  remove_active(lookup.storage_group, entity)
1041
1036
  lookup.storage_group.changes.added[entity] = nil
1042
1037
  lookup.storage_group.changes.changed[entity] = nil
1038
+ lookup.storage_group.changes.added_components[entity] = nil
1043
1039
 
1044
1040
  masking.lookups.entities[entity] = nil
1045
1041
  end
@@ -1313,6 +1309,8 @@ function masking_controller.allocate_pair_value_removal(
1313
1309
  removed = {}
1314
1310
  changes.pairs_values.removed[relation] = removed
1315
1311
  end
1312
+ removed[target] = true
1313
+
1316
1314
  local values = changes.pairs_values.changed[relation]
1317
1315
  if values ~= nil then
1318
1316
  values[target] = nil
@@ -1343,7 +1341,18 @@ end
1343
1341
  local function bitmask_from_set(masking: MaskingInternal, member_set: { [Member]: boolean }): utils.Bitmask
1344
1342
  local new_bitmask = utils.bitmask.create(masking.member_count)
1345
1343
  for member: Member in member_set do
1346
- local index = masking.member_indexes[member] or masking.member_indexes[masking.client_aliases[member]]
1344
+ local index = masking.member_indexes[member]
1345
+ if not index then
1346
+ local alias = masking.member_indexes[masking.client_aliases[member]]
1347
+ if alias then
1348
+ if utils.is_client_valid(alias) then
1349
+ index = alias
1350
+ end
1351
+ elseif utils.is_client_valid(member) then
1352
+ masking_controller.register_client(masking, member)
1353
+ index = masking.member_indexes[member]
1354
+ end
1355
+ end
1347
1356
  if index then
1348
1357
  new_bitmask:set(index)
1349
1358
  end
@@ -1495,13 +1504,13 @@ function masking_controller.create_exclude_generator(masking: MaskingInternal, e
1495
1504
  local bitmask = bitmask_from_set(masking, exclude)
1496
1505
  local active_members = masking.active_members_generator
1497
1506
 
1498
- local generator = mask_generator.create(bitmask, function(generator)
1499
- local bitmask = generator.bitmask :: utils.Bitmask
1500
- return active_members.result:band(bitmask:bnot())
1507
+ local new_generator = mask_generator.create(bitmask, function(generator)
1508
+ local current = generator.bitmask :: utils.Bitmask
1509
+ return active_members.result:band(current:bnot())
1501
1510
  end)
1502
- generator:track(active_members)
1511
+ new_generator:track(active_members)
1503
1512
 
1504
- return generator
1513
+ return new_generator
1505
1514
  end
1506
1515
 
1507
1516
  -- TODO: check for players existing and register them if they don't
@@ -1509,13 +1518,13 @@ function masking_controller.create_include_generator(masking: MaskingInternal, i
1509
1518
  local bitmask = bitmask_from_set(masking, include)
1510
1519
  local active_members = masking.active_members_generator
1511
1520
 
1512
- local generator = mask_generator.create(bitmask, function(generator)
1513
- local bitmask = generator.bitmask :: utils.Bitmask
1514
- return bitmask:band(active_members.result)
1521
+ local new_generator = mask_generator.create(bitmask, function(generator)
1522
+ local current = generator.bitmask :: utils.Bitmask
1523
+ return current:band(active_members.result)
1515
1524
  end)
1516
- generator:track(active_members)
1525
+ new_generator:track(active_members)
1517
1526
 
1518
- return generator
1527
+ return new_generator
1519
1528
  end
1520
1529
 
1521
1530
  function masking_controller.create_all_members_generator(masking: MaskingInternal)
@@ -1543,9 +1552,9 @@ function masking_controller.create_active_generator(masking: MaskingController):
1543
1552
  return new_generator
1544
1553
  end
1545
1554
 
1546
- function masking_controller.register_mask_group(masking: MaskingInternal, group: Member) end
1555
+ --function masking_controller.register_mask_group(masking: MaskingInternal, group: Member) end
1547
1556
 
1548
- function masking_controller.unregister_mask_group(masking: MaskingInternal, group: Member) end
1557
+ --function masking_controller.unregister_mask_group(masking: MaskingInternal, group: Member) end
1549
1558
 
1550
1559
  function masking_controller.register_client(masking: MaskingInternal, member: Member)
1551
1560
  if masking.member_indexes[member] then
@@ -1574,16 +1583,12 @@ function masking_controller.unregister_client(masking: MaskingInternal, member:
1574
1583
  end
1575
1584
  masking.client_indexes[member] = nil
1576
1585
  masking.member_indexes[member] = nil
1577
- masking.member_count -= 1
1578
1586
  masking.all_members_generator.bitmask:clear(index)
1579
1587
  masking.active_members_generator:compute()
1580
1588
  end
1581
1589
 
1582
1590
  function masking_controller.activate_client(masking: MaskingInternal, member: Member)
1583
1591
  local index = masking.client_indexes[member]
1584
- if index == nil then
1585
- index = masking.client_indexes[member]
1586
- end
1587
1592
 
1588
1593
  masking.unreplicated[member] = nil
1589
1594
  masking.unactive_members_generator.bitmask:clear(index)
@@ -63,7 +63,7 @@ end
63
63
 
64
64
  function mask_generator.compute(generator: GeneratorInternal)
65
65
  if generator.compute_callback then
66
- local result = generator.compute_callback(generator :: GeneratorInternal)
66
+ local result: utils.Bitmask = generator.compute_callback(generator :: any)
67
67
  generator.result = result
68
68
  end
69
69
  if generator.subscribed then