public void UnlinksEntityReleasesEntity() { // given _link.Link(_entity); var retainCount = _entity.retainCount; // when _link.Unlink(); Assert.AreEqual(retainCount - 1, _entity.retainCount); Assert.IsNull(_link.entity); #if !ENTITAS_FAST_AND_UNSAFE Assert.IsFalse(((SafeAERC)_entity.aerc).owners.Contains(_link)); #endif }
void IMonoView.Destroy() { foreach (var entityLinker in entityLinkers) { entityLinker.Unlink(Contexts, Entity); } entityLink.Unlink(); Destroy(entityLink); Destroy(gameObject); }
protected override void Execute(System.Collections.Generic.List <GameEntity> entities) { foreach (var entity in entities) { EntityLink entityLink = entity.view.value.GetComponent <EntityLink>(); entityLink?.Unlink(); GameEntity objectHit = entity.projectileHit.objectHit; objectHit?.ReplaceHealth(objectHit.health.value - PROJECTILE_DAMAGE); entity.view.value.SetActive(false); } }
public void OnToDestroy(GameEntity entity, uint delay) { if (delay == 0) { UnregisterListeners(entity); //entity.RemoveToDestroyListener(this); if (link != null && link.entity != null) { link.Unlink(); } if (_template.gameObject.activeSelf) { Contexts.sharedInstance.meta.entityService.current.Return(_template); } } }