using System; using NitroxModel.DataStructures.GameLogic; using NitroxModel.DataStructures.Util; using UnityEngine; namespace NitroxClient.GameLogic.Spawning.Abstract; public abstract class SyncEntitySpawner : EntitySpawner, ISyncEntitySpawner where T : Entity { protected abstract bool SpawnSync(T entity, TaskResult> result); public bool SpawnSync(Entity entity, TaskResult> result) { return SpawnSync((T)entity, result); } /// The result of or true with the caught exception public bool SpawnSyncSafe(Entity entity, TaskResult> result, TaskResult exception) { try { if (SpawnSync((T)entity, result)) { exception.Set(null); return true; } } catch (Exception e) { exception.Set(e); return true; } exception.Set(null); return false; } }