示例#1
0
    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
    }
示例#2
0
        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);
        }
    }
示例#4
0
    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);
            }
        }
    }