// Start is called before the first frame update
    void Start()
    {
        thingToTrackReference = thingToTrack;

        RunOnAnyTilePrepActivityRef = this;

        //Queue<GameObject>
        activationList = new Queue <GameObject>();
        //Queue<GameObject>
        deactivationList = new Queue <GameObject>();

        RenderingMessageRef           = RenderingMessage;
        RenderingMessageRefGameObject = RenderingMessageRef.gameObject;

        DistrictMessageRefGameObject = DistrictMessage.gameObject;

        TerrainTile.OnBeforeTileGenerate -= OnBeforeTileGenerated;
        TerrainTile.OnBeforeTileGenerate += OnBeforeTileGenerated;

        TerrainTile.OnTileApplied -= OnTileAppliedRenderMeshSplines;
        TerrainTile.OnTileApplied += OnTileAppliedRenderMeshSplines;

        // TODO ADD TAG BASED ROTATION

        //TerrainTile.OnTileApplied -= OnTileAppliedRotateTowardsTag;
        //TerrainTile.OnTileApplied += OnTileAppliedRotateTowardsTag;



        TerrainTile.OnAllComplete -= OnAllTilesGenerated;
        TerrainTile.OnAllComplete += OnAllTilesGenerated;

        tgos = Component.FindObjectOfType <TownGlobalObjectService>();

        TerrainTile.OnTileMoved -= OnTileMoved;
        TerrainTile.OnTileMoved += OnTileMoved;
    }
    // We Always do the checks.

    void Awake()
    {
        StaticInstance = Instance;
        DoChecks();
    }