@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.
- package/out/replecs/client.luau +816 -345
- package/out/replecs/common.luau +40 -23
- package/out/replecs/customid.luau +39 -0
- package/out/replecs/index.d.ts +116 -26
- package/out/replecs/init.luau +45 -17
- package/out/replecs/masking/init.luau +40 -35
- package/out/replecs/masking/mask_generator.luau +1 -1
- package/out/replecs/server.luau +547 -280
- package/out/replecs/utils.luau +188 -31
- package/out/replecs/ver.luau +2 -0
- package/package.json +1 -1
- package/out/replecs/masking/filter_group.luau +0 -1
|
@@ -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:
|
|
167
|
-
set_entity: (self: MaskingController, entity: Entity, filter:
|
|
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:
|
|
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:
|
|
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.
|
|
719
|
-
target_changes.
|
|
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.
|
|
723
|
+
changes.tagged[component] = nil
|
|
723
724
|
changes.removed[component] = nil
|
|
724
|
-
elseif component_type == COMPONENT_TYPES.
|
|
725
|
-
target_changes.
|
|
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.
|
|
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]
|
|
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
|
|
1499
|
-
local
|
|
1500
|
-
return active_members.result:band(
|
|
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
|
-
|
|
1511
|
+
new_generator:track(active_members)
|
|
1503
1512
|
|
|
1504
|
-
return
|
|
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
|
|
1513
|
-
local
|
|
1514
|
-
return
|
|
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
|
-
|
|
1525
|
+
new_generator:track(active_members)
|
|
1517
1526
|
|
|
1518
|
-
return
|
|
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 ::
|
|
66
|
+
local result: utils.Bitmask = generator.compute_callback(generator :: any)
|
|
67
67
|
generator.result = result
|
|
68
68
|
end
|
|
69
69
|
if generator.subscribed then
|