public override void Construct(Blob arguments, EntityUniverseFacade entityUniverseFacade)
        {
            base.Construct(arguments, entityUniverseFacade);
            _universe = entityUniverseFacade;

            var tile = GameContext.TileDatabase.GetTileConfiguration(arguments.GetString("tile"));

            var component = tile.Components.Select <ChargeableComponent>().FirstOrDefault();

            if (component != default(ChargeableComponent))
            {
                _outputToTiles  = component.OutputToTiles;
                _inputFromTiles = component.InputFromTiles;
            }

            CycleHook.AddCycle(arguments.FetchBlob("location").GetVector3I());
        }
        public override void PreUpdate(Timestep timestep, EntityUniverseFacade universe)
        {
            base.PreUpdate(timestep, universe);

            if (universe.ReadTile(Location, TileAccessFlags.SynchronousWait, out var tile))
            {
                if (tile.Configuration.Code == "staxel.tile.Sky")
                {
                    CycleHook.RemoveCycle(Location);
                    universe.RemoveEntity(Entity.Id);
                }
                else
                {
                    Cycle.RunCycle(RunCycle);
                }
            }
        }