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); }
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); }
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(); }
public void SetPause(bool Pause) { if (Pause == IsPaused) { return; } IsPaused = Pause; if (Pause) { Atlas.PauseBehaviours(); } else { Atlas.ResumeBehaviours(); } UrbAgentManager.SetPauseOnAllAgents(Pause); }