From a51b7c9af1d1255fd7bf3a42a8414b081fcc7d31 Mon Sep 17 00:00:00 2001 From: bgkillas Date: Wed, 5 Mar 2025 03:58:15 -0500 Subject: [PATCH] add ew_sync_child tag --- ew_api_example/module.lua | 1 + ewext/src/modules/entity_sync.rs | 2 +- .../entity_sync_helper/entity_sync_helper.lua | 19 +++++++++++++++++++ quant.ew/init.lua | 16 +--------------- 4 files changed, 22 insertions(+), 16 deletions(-) diff --git a/ew_api_example/module.lua b/ew_api_example/module.lua index 45cbeae0..26155a52 100644 --- a/ew_api_example/module.lua +++ b/ew_api_example/module.lua @@ -40,6 +40,7 @@ return module -- ew_ghost_rnd, for something to sync perk ghosts rng -- ew_projectile_position_sync, syncs a projectile by des -- ew_unique, kills an entity if another one was spawned within the same chunk on any peer, by filename +-- ew_sync_child, syncs a thing in des ignoring weather its a child or not -- var components(by name not tag): -- ew_peer_id, on all peers, contains peerid in value_string diff --git a/ewext/src/modules/entity_sync.rs b/ewext/src/modules/entity_sync.rs index 1fc4fecc..13046b26 100644 --- a/ewext/src/modules/entity_sync.rs +++ b/ewext/src/modules/entity_sync.rs @@ -115,7 +115,7 @@ fn entity_is_excluded(entity: EntityID) -> eyre::Result { || ENTITY_EXCLUDES.contains(&filename) || filename.starts_with(good) || entity.has_tag("player_unit") - || entity.root()? != Some(entity)) + || (entity.root()? != Some(entity) && !entity.has_tag("ew_sync_child"))) } impl EntitySync { diff --git a/quant.ew/files/system/entity_sync_helper/entity_sync_helper.lua b/quant.ew/files/system/entity_sync_helper/entity_sync_helper.lua index b39295f4..bab0aa65 100644 --- a/quant.ew/files/system/entity_sync_helper/entity_sync_helper.lua +++ b/quant.ew/files/system/entity_sync_helper/entity_sync_helper.lua @@ -119,6 +119,25 @@ for _, filename in ipairs(unique) do util.add_tag_to(filename, "ew_unique") end +local projs = { + "data/entities/projectiles/deck/rock.xml", + "data/entities/projectiles/deck/levitation_field.xml", + "data/entities/projectiles/bomb.xml", + "data/entities/projectiles/propane_tank.xml", + "data/entities/projectiles/deck/disc_bullet_big.xml", + "data/entities/projectiles/deck/disc_bullet_bigger.xml", + "data/entities/projectiles/deck/black_hole.xml", + "data/entities/projectiles/deck/black_hole_giga.xml", + "data/entities/projectiles/deck/white_hole.xml", + "data/entities/projectiles/deck/white_hole_giga.xml", + "data/entities/projectiles/deck/orb_laseremitter_four.xml", + "data/entities/projectiles/deck/projectile_transmutation_field.xml", +} + +for _, proj in ipairs(projs) do + util.add_tag_to(proj, "ew_projectile_position_sync") +end + util.add_cross_call("ew_broken_wand", function(ent, x, y) local gid for _, v in ipairs(EntityGetComponent(ent, "VariableStorageComponent") or {}) do diff --git a/quant.ew/init.lua b/quant.ew/init.lua index d044eb62..ac7578f6 100755 --- a/quant.ew/init.lua +++ b/quant.ew/init.lua @@ -275,21 +275,7 @@ function OnProjectileFired( end end --ewext.sync_projectile(projectile_id, shooter_player_data.peer_id, rng) - elseif - n == "data/entities/projectiles/deck/rock.xml" - or n == "data/entities/projectiles/deck/levitation_field.xml" - or n == "data/entities/projectiles/bomb.xml" - or n == "data/entities/projectiles/propane_tank.xml" - or n == "data/entities/projectiles/deck/disc_bullet_big.xml" - or n == "data/entities/projectiles/deck/disc_bullet_bigger.xml" - or n == "data/entities/projectiles/deck/black_hole.xml" - or n == "data/entities/projectiles/deck/black_hole_giga.xml" - or n == "data/entities/projectiles/deck/white_hole.xml" - or n == "data/entities/projectiles/deck/white_hole_giga.xml" - or n == "data/entities/projectiles/deck/orb_laseremitter_four.xml" - or n == "data/entities/projectiles/deck/projectile_transmutation_field.xml" - or EntityHasTag(projectile_id, "ew_projectile_position_sync") - then + elseif EntityHasTag(projectile_id, "ew_projectile_position_sync") then local body = EntityGetFirstComponentIncludingDisabled(projectile_id, "PhysicsBody2Component") local proj = EntityGetFirstComponentIncludingDisabled(projectile_id, "ProjectileComponent") local life = EntityGetFirstComponentIncludingDisabled(projectile_id, "LifetimeComponent")