Beispiel #1
0
    public void Remove(bool reorder = true)
    {
        if (Removing)
        {
            logger.Log("Attempting to remove an object already being removed");
            return;
        }
        Removing = true;

        UrbAgentManager.UnregisterAgent(this);

        CurrentTile?.OnAgentLeave(this, reorder);

        CurrentMap = null;
        if (TotalAgents > 0)
        {
            TotalAgents--;
        }

        if (Debug.developerConsoleVisible)
        {
            logger.Log(LogType.Log, "Remove entity, destroying game object", context: this);
        }
        Destroy(gameObject);
    }
Beispiel #2
0
    public override void OnEnable()
    {
        Assert.IsTrue(HasAwakeBeenCalled);
        Assert.IsNotNull(tileprint);

        if (ID == 0)
        {
            //Multi-threaded paranoia.
            ID = Interlocked.Increment(ref LASTID);
        }

        BirthTime = Time.time;

        this.transform.rotation = _camera.transform.rotation;

        LastCheckedMass = 0;

        UrbMerges = GetComponents <UrbMerge>();

        if (UrbMerges != null && UrbMerges.Length > 0)
        {
            IsMergeable = true;
        }

        UrbAgentManager.RegisterAgent(this);
        IsPaused = ShouldPause;

        base.OnEnable();

        AgentLocalName = gameObject.name.Split('(')[0];
        OccupiedTiles  = Tileprint.GetAllPrintTiles(this);
    }
Beispiel #3
0
    public override void OnDisable()
    {
        Assert.IsNotNull(CurrentTile);
        Assert.IsNotNull(CurrentTile.Occupants);

        CurrentTile.Occupants.Remove(this);

        //generally we don't actually care if
        //the underlying objects are non-null
        //only if it's null and we don't know about it
        IsCurrentMapNull = true;
        CurrentTile      = null;
        CurrentMap       = null;
        UrbAgentManager.UnregisterAgent(this);
        base.OnDisable();
    }
Beispiel #4
0
    public void SetPause(bool Pause)
    {
        if (Pause == IsPaused)
        {
            return;
        }

        IsPaused = Pause;
        if (Pause)
        {
            Atlas.PauseBehaviours();
        }
        else
        {
            Atlas.ResumeBehaviours();
        }

        UrbAgentManager.SetPauseOnAllAgents(Pause);
    }