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);
         }