using QSB.Player; using UnityEngine; namespace QSB.WorldSync { public abstract class WorldObject : IWorldObject where T : MonoBehaviour { public int ObjectId { get; set; } public T AttachedObject { get; set; } public string Name => AttachedObject == null ? "" : AttachedObject.name; public string LogName => $"{QSBPlayerManager.LocalPlayerId}.{ObjectId}:{GetType().Name}"; public virtual void Init() { } public virtual void OnRemoval() { } public MonoBehaviour ReturnObject() => AttachedObject; /// indicates that this won't become ready immediately protected void StartDelayedReady() => WorldObjectManager._numObjectsReadying++; /// indicates that this is now ready protected void FinishDelayedReady() => WorldObjectManager._numObjectsReadying--; } }