@rbxts/replecs 0.2.2 → 0.2.3-test1
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 +18 -18
- package/out/replecs/masking/init.luau +15 -23
- package/out/replecs/server.luau +18 -6
- package/out/replecs/ver.luau +1 -1
- package/package.json +1 -1
package/out/replecs/client.luau
CHANGED
|
@@ -200,6 +200,24 @@ function client_replicator.entity_set(
|
|
|
200
200
|
end
|
|
201
201
|
end
|
|
202
202
|
|
|
203
|
+
function client_replicator.entity_add(client: Client, entity: Entity, tag: Entity, changed_hooks: ChangedHooksEntry?)
|
|
204
|
+
if client.command_buffers_active then
|
|
205
|
+
local command_buffer = get_command_buffer(client, entity)
|
|
206
|
+
command_buffer.tags[tag] = true
|
|
207
|
+
else
|
|
208
|
+
if changed_hooks then
|
|
209
|
+
if not changed_hooks.overrides then
|
|
210
|
+
client.world:add(entity, tag)
|
|
211
|
+
end
|
|
212
|
+
for _, callback in changed_hooks.callbacks do
|
|
213
|
+
callback(entity, tag)
|
|
214
|
+
end
|
|
215
|
+
else
|
|
216
|
+
client.world:add(entity, tag)
|
|
217
|
+
end
|
|
218
|
+
end
|
|
219
|
+
end
|
|
220
|
+
|
|
203
221
|
function client_replicator.entity_set_unreliable(
|
|
204
222
|
client: Client,
|
|
205
223
|
entity: Entity,
|
|
@@ -237,24 +255,6 @@ function client_replicator.entity_set_pair(
|
|
|
237
255
|
end
|
|
238
256
|
end
|
|
239
257
|
|
|
240
|
-
function client_replicator.entity_add(
|
|
241
|
-
client: Client,
|
|
242
|
-
entity: Entity,
|
|
243
|
-
component: Entity,
|
|
244
|
-
changed_hooks: ChangedHooksEntry?
|
|
245
|
-
)
|
|
246
|
-
if changed_hooks then
|
|
247
|
-
if not changed_hooks.overrides then
|
|
248
|
-
client.world:add(entity, component)
|
|
249
|
-
end
|
|
250
|
-
for _, callback in changed_hooks.callbacks do
|
|
251
|
-
callback(entity, component)
|
|
252
|
-
end
|
|
253
|
-
else
|
|
254
|
-
client.world:add(entity, component)
|
|
255
|
-
end
|
|
256
|
-
end
|
|
257
|
-
|
|
258
258
|
function client_replicator.entity_add_pair(
|
|
259
259
|
client: Client,
|
|
260
260
|
entity: Entity,
|
|
@@ -114,7 +114,6 @@ export type MaskingController = {
|
|
|
114
114
|
|
|
115
115
|
client_indexes: { [Member]: number },
|
|
116
116
|
group_indexes: { [number]: number },
|
|
117
|
-
member_indexes: { [Member]: number },
|
|
118
117
|
client_aliases: { [any]: Member },
|
|
119
118
|
|
|
120
119
|
compact_count: number,
|
|
@@ -1173,8 +1172,10 @@ function masking_controller.stop_component(
|
|
|
1173
1172
|
else
|
|
1174
1173
|
if entity_lookup then
|
|
1175
1174
|
remove_component_active(entity_lookup.storage_group, entity, component, component_type)
|
|
1175
|
+
entity_lookup.components[component_type][component] = nil
|
|
1176
|
+
else
|
|
1177
|
+
remove_component_index_entry(masking.lookups.postponed, entity, component, component_type)
|
|
1176
1178
|
end
|
|
1177
|
-
entity_lookup.components[component_type][component] = nil
|
|
1178
1179
|
end
|
|
1179
1180
|
end
|
|
1180
1181
|
|
|
@@ -1341,16 +1342,16 @@ end
|
|
|
1341
1342
|
local function bitmask_from_set(masking: MaskingInternal, member_set: { [Member]: boolean }): utils.Bitmask
|
|
1342
1343
|
local new_bitmask = utils.bitmask.create(masking.member_count)
|
|
1343
1344
|
for member: Member in member_set do
|
|
1344
|
-
local index = masking.
|
|
1345
|
+
local index = masking.client_indexes[member]
|
|
1345
1346
|
if not index then
|
|
1346
|
-
local alias = masking.
|
|
1347
|
+
local alias = masking.client_indexes[masking.client_aliases[member]]
|
|
1347
1348
|
if alias then
|
|
1348
1349
|
if utils.is_client_valid(alias) then
|
|
1349
1350
|
index = alias
|
|
1350
1351
|
end
|
|
1351
1352
|
elseif utils.is_client_valid(member) then
|
|
1352
1353
|
masking_controller.register_client(masking, member)
|
|
1353
|
-
index = masking.
|
|
1354
|
+
index = masking.client_indexes[member]
|
|
1354
1355
|
end
|
|
1355
1356
|
end
|
|
1356
1357
|
if index then
|
|
@@ -1416,23 +1417,15 @@ end
|
|
|
1416
1417
|
function masking_controller.compact_members(masking: MaskingInternal)
|
|
1417
1418
|
-- we dont recompute as nothing should've changed
|
|
1418
1419
|
-- so this should be hopefully quite cheap
|
|
1419
|
-
local old_indexes = masking.
|
|
1420
|
+
local old_indexes = masking.client_indexes
|
|
1420
1421
|
local new_indexes: { [Member]: number } = {}
|
|
1421
1422
|
|
|
1422
1423
|
local new_count = 0
|
|
1423
1424
|
for member in old_indexes do
|
|
1424
1425
|
new_indexes[member] = new_count
|
|
1425
|
-
|
|
1426
|
-
if masking.client_indexes[member] then
|
|
1427
|
-
masking.client_indexes[member] = new_count
|
|
1428
|
-
end
|
|
1429
|
-
if masking.group_indexes[new_count] then
|
|
1430
|
-
masking.group_indexes[new_count] = member
|
|
1431
|
-
end
|
|
1432
|
-
|
|
1433
1426
|
new_count += 1
|
|
1434
1427
|
end
|
|
1435
|
-
masking.
|
|
1428
|
+
masking.client_indexes = new_indexes
|
|
1436
1429
|
masking.member_count = new_count
|
|
1437
1430
|
|
|
1438
1431
|
for _, entity_lookup in masking.lookups.entities do
|
|
@@ -1469,7 +1462,9 @@ function masking_controller.compact_members(masking: MaskingInternal)
|
|
|
1469
1462
|
local active = masking.active_members_generator
|
|
1470
1463
|
|
|
1471
1464
|
all.bitmask = remap_bitmask(all.bitmask, old_indexes, new_indexes, new_count)
|
|
1465
|
+
all.result = all.bitmask
|
|
1472
1466
|
unactive.bitmask = remap_bitmask(unactive.bitmask, old_indexes, new_indexes, new_count)
|
|
1467
|
+
unactive.result = unactive.bitmask
|
|
1473
1468
|
active.result = remap_bitmask(active.result, old_indexes, new_indexes, new_count)
|
|
1474
1469
|
|
|
1475
1470
|
local new_storages: Storages = {}
|
|
@@ -1529,14 +1524,14 @@ end
|
|
|
1529
1524
|
|
|
1530
1525
|
function masking_controller.create_all_members_generator(masking: MaskingInternal)
|
|
1531
1526
|
local filter: MemberFilter = {}
|
|
1532
|
-
for member in masking.
|
|
1527
|
+
for member in masking.client_indexes do
|
|
1533
1528
|
filter[member] = true
|
|
1534
1529
|
end
|
|
1535
|
-
local bitmask = utils.bitmask.from_set(masking.
|
|
1530
|
+
local bitmask = utils.bitmask.from_set(masking.client_indexes, filter, masking.member_count)
|
|
1536
1531
|
return mask_generator.create(bitmask) :: MaskGeneratorWithBitmask
|
|
1537
1532
|
end
|
|
1538
1533
|
function masking_controller.create_unactive_generator(masking: MaskingController)
|
|
1539
|
-
local bitmask = utils.bitmask.from_set(masking.
|
|
1534
|
+
local bitmask = utils.bitmask.from_set(masking.client_indexes, masking.unreplicated, masking.member_count)
|
|
1540
1535
|
return mask_generator.create(bitmask) :: MaskGeneratorWithBitmask
|
|
1541
1536
|
end
|
|
1542
1537
|
function masking_controller.create_active_generator(masking: MaskingController): MaskGenerator
|
|
@@ -1557,13 +1552,12 @@ end
|
|
|
1557
1552
|
--function masking_controller.unregister_mask_group(masking: MaskingInternal, group: Member) end
|
|
1558
1553
|
|
|
1559
1554
|
function masking_controller.register_client(masking: MaskingInternal, member: Member)
|
|
1560
|
-
if masking.
|
|
1555
|
+
if masking.client_indexes[member] then
|
|
1561
1556
|
return
|
|
1562
1557
|
end
|
|
1563
1558
|
|
|
1564
1559
|
local current = masking.member_count
|
|
1565
1560
|
masking.client_indexes[member] = current
|
|
1566
|
-
masking.member_indexes[member] = current
|
|
1567
1561
|
masking.member_count += 1
|
|
1568
1562
|
|
|
1569
1563
|
masking.unreplicated[member] = true
|
|
@@ -1577,12 +1571,11 @@ function masking_controller.register_client(masking: MaskingInternal, member: Me
|
|
|
1577
1571
|
end
|
|
1578
1572
|
|
|
1579
1573
|
function masking_controller.unregister_client(masking: MaskingInternal, member: Member)
|
|
1580
|
-
local index = masking.
|
|
1574
|
+
local index = masking.client_indexes[member]
|
|
1581
1575
|
if index == nil then
|
|
1582
1576
|
return
|
|
1583
1577
|
end
|
|
1584
1578
|
masking.client_indexes[member] = nil
|
|
1585
|
-
masking.member_indexes[member] = nil
|
|
1586
1579
|
masking.all_members_generator.bitmask:clear(index)
|
|
1587
1580
|
masking.active_members_generator:compute()
|
|
1588
1581
|
end
|
|
@@ -1607,7 +1600,6 @@ end
|
|
|
1607
1600
|
local function create(): MaskingController
|
|
1608
1601
|
local self = {} :: MaskingInternal
|
|
1609
1602
|
|
|
1610
|
-
self.member_indexes = {}
|
|
1611
1603
|
self.client_indexes = {}
|
|
1612
1604
|
self.group_indexes = {}
|
|
1613
1605
|
self.client_aliases = {}
|
package/out/replecs/server.luau
CHANGED
|
@@ -1426,12 +1426,15 @@ function server_replicator.init(server: Server, wrd: World?)
|
|
|
1426
1426
|
error "Providing a world is required to start replecs"
|
|
1427
1427
|
end
|
|
1428
1428
|
|
|
1429
|
-
local hooks =
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1429
|
+
local hooks = server.hooks
|
|
1430
|
+
if not hooks then
|
|
1431
|
+
hooks = {
|
|
1432
|
+
added = (world :: any).added,
|
|
1433
|
+
changed = (world :: any).changed,
|
|
1434
|
+
removed = (world :: any).removed,
|
|
1435
|
+
}
|
|
1436
|
+
server.hooks = hooks
|
|
1437
|
+
end
|
|
1435
1438
|
|
|
1436
1439
|
local components = server.components
|
|
1437
1440
|
server.shared = utils.resolved_shared(world, components, server.registered_custom_ids)
|
|
@@ -1630,6 +1633,15 @@ local function create(world: World?, components: common.Components): Server
|
|
|
1630
1633
|
jecs.Name,
|
|
1631
1634
|
}
|
|
1632
1635
|
|
|
1636
|
+
if world then
|
|
1637
|
+
local hooks = {
|
|
1638
|
+
added = (world :: any).added,
|
|
1639
|
+
changed = (world :: any).changed,
|
|
1640
|
+
removed = (world :: any).removed,
|
|
1641
|
+
}
|
|
1642
|
+
self.hooks = hooks
|
|
1643
|
+
end
|
|
1644
|
+
|
|
1633
1645
|
return setmetatable(self, server_replicator) :: any
|
|
1634
1646
|
end
|
|
1635
1647
|
|
package/out/replecs/ver.luau
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
-- Automatically generated
|
|
2
|
-
return "
|
|
2
|
+
return ""
|