public bool Despawn(GameObject gameObject, DespawnType despawnType) { if (gameObject == null) { return(false); } Release(); if (despawnType == DespawnType.Destroy) { if (Application.isPlaying) { GameObject.Destroy(gameObject); } else { GameObject.DestroyImmediate(gameObject); } return(false); } m_objectList.AddLast(gameObject); return(true); }
public void Despawn(GameObject gameObject, DespawnType despawnType) { if (gameObject == null) { return; } int spawnID = gameObject.GetInstanceID(); ulong pathHash = 0; if (!m_spawnID2PathHash.TryGetValue(spawnID, out pathHash)) { if (Application.isPlaying) { GameObject.Destroy(gameObject); } else { GameObject.DestroyImmediate(gameObject); } Log.ErrorFormat("[ResourcePoolManager]Failed to despawn unkown gameObject({0})", gameObject.name); return; } m_spawnID2PathHash.Remove(spawnID); ResourcePool resourcePool = _GetResourcePool(pathHash); if (resourcePool == null) { if (Application.isPlaying) { GameObject.Destroy(gameObject); } else { GameObject.DestroyImmediate(gameObject); } Log.ErrorFormat("[ResourcePoolManager]Failed to find resource pool for gameObject({0})", gameObject.name); return; } _OnCacheFull(); if (despawnType != DespawnType.Destroy) { Transform parent = despawnType == DespawnType.Invisible ? m_invisibleParent : m_inactiveParent; gameObject.transform.SetParent(parent, false); } if (resourcePool.Despawn(gameObject, despawnType)) { ++m_deSpawnCount; _AddCacheValue(resourcePool); } }
public static void DespawnNPC(ulong target, DespawnType type) { BossGageWindowViewModel.Instance.RemoveBoss(target, type); if (BossGageWindowViewModel.Instance.VisibleBossesCount == 0) { SessionManager.Encounter = false; GroupWindowViewModel.Instance.SetAggro(0); } }
public static void Despawn(GameObject gameObject, DespawnType despawnType = DespawnType.Destroy) { if (!Application.isPlaying) { Object.DestroyImmediate(gameObject); } else { ResourcePoolManager.Instance.Despawn(gameObject, despawnType); } }
public static void DespawnNPC(ulong target, DespawnType type) { NearbyNPC.Remove(target); WindowManager.BossWindow.VM.RemoveBoss(target, type); if (WindowManager.BossWindow.VM.VisibleBossesCount == 0) { SessionManager.Encounter = false; WindowManager.GroupWindow.VM.SetAggro(0); } ClassAbnormalityTracker.CheckMarkingOnDespawn(target); FlyingGuardianDataProvider.InvokeProgressChanged(); }
public static void DespawnNPC(ulong target, DespawnType type) { if (NearbyNPC.ContainsKey(target)) { NearbyNPC.Remove(target); } BossGageWindowViewModel.Instance.RemoveBoss(target, type); if (BossGageWindowViewModel.Instance.VisibleBossesCount == 0) { SessionManager.Encounter = false; GroupWindowViewModel.Instance.SetAggro(0); } ClassAbnormalityTracker.CheckMarkingOnDespawn(target); FlyingGuardianDataProvider.InvokeProgressChanged(); }
public S_DESPAWN_NPC(TeraMessageReader reader) : base(reader) { Target = reader.ReadUInt64(); reader.Skip(3 * 4); Type = (DespawnType)reader.ReadUInt32(); }