public override void Restore()
 {
     base.Restore();
     Location       = _blob.FetchBlob("location").GetVector3I();
     _variant       = (uint)_blob.GetLong("variant");
     _done          = _blob.GetBool("done");
     _countPosition = _blob.GetBlob("countPosition").GetVector3D();
     _boundingShape = Shape.FromBlob(_blob.FetchBlob("boundingShape"));
     _configuration = GameContext.TileDatabase.GetTileConfiguration(_blob.GetString("tile"));
     _goalComponent = _configuration.Components.Get <SoccerGoalComponentBuilder.GoalComponent>();
     GoalCount      = (int)_blob.GetLong("goalCount", 0);
 }
        public override void Construct(Blob arguments, EntityUniverseFacade entityUniverseFacade)
        {
            _configuration = GameContext.TileDatabase.GetTileConfiguration(arguments.GetString("tile"));
            _goalComponent = _configuration.Components.GetOrDefault <SoccerGoalComponentBuilder.GoalComponent>();
            var      tile = _configuration.MakeTile();
            Vector3D ignored;

            _boundingShape = tile.Configuration.FetchBoundingBox(tile.Variant(), out ignored).ToShape().Scale(_goalComponent == null ? 1f : _goalComponent.HitBoxScale);
            Location       = arguments.FetchBlob("location").GetVector3I();
            _variant       = (uint)arguments.GetLong("variant");
            Entity.Physics.Construct(arguments.FetchBlob("position").GetVector3D(), Vector3D.Zero);
            Entity.Physics.MakePhysicsless();
        }