From 4df5a39d6b7acd5d6344c614989d3b20f4ac3faa Mon Sep 17 00:00:00 2001 From: RevenantX <doomrevx@gmail.com> Date: Tue, 26 Nov 2024 22:08:01 +0200 Subject: [PATCH] simplify parent change because Childs is now synchronized --- LiteEntitySystem/EntityLogic.cs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/LiteEntitySystem/EntityLogic.cs b/LiteEntitySystem/EntityLogic.cs index 37fa808..eec7e2c 100644 --- a/LiteEntitySystem/EntityLogic.cs +++ b/LiteEntitySystem/EntityLogic.cs @@ -154,7 +154,7 @@ public T AddPredictedEntity<T>(Action<T> initMethod = null) where T : EntityLogi entity._predictedId.Value = _localPredictedIdCounter.Value++; entity._parentId.Value = new EntitySharedReference(this); entity.InternalOwnerId.Value = InternalOwnerId.Value; - entity.OnParentChange(EntitySharedReference.Empty); + Childs.Add(this); entity.OnOwnerChange(EntityManager.InternalPlayerId); return entity; } @@ -196,7 +196,7 @@ public void AddPredictedEntity<T>(ref SyncVar<EntitySharedReference> targetRefer entity = ClientManager.AddLocalEntity(initMethod); entity._parentId.Value = new EntitySharedReference(this); entity.InternalOwnerId.Value = InternalOwnerId.Value; - entity.OnParentChange(EntitySharedReference.Empty); + Childs.Add(this); entity.OnOwnerChange(EntityManager.InternalPlayerId); targetReference.Value = entity; } @@ -214,9 +214,9 @@ public void SetParent(EntityLogic parentEntity) if (id == _parentId.Value) return; - EntitySharedReference oldId = _parentId; + EntityManager.GetEntityById<EntityLogic>(_parentId)?.Childs.Remove(this); + EntityManager.GetEntityById<EntityLogic>(id)?.Childs.Add(this); _parentId.Value = id; - OnParentChange(oldId); var newParent = EntityManager.GetEntityById<EntityLogic>(_parentId)?.InternalOwnerId ?? EntityManager.ServerPlayerId; if (InternalOwnerId.Value != newParent) @@ -314,7 +314,6 @@ internal static void SetOwner(EntityLogic entity, byte ownerId) protected override void RegisterRPC(ref RPCRegistrator r) { base.RegisterRPC(ref r); - r.BindOnChange(this, ref _parentId, OnParentChange); r.BindOnChange(this, ref InternalOwnerId, OnOwnerChange); }