public override void Update(GameTime gameTime)
        {
            this.CleanDead();

            var allEntities = UsersManager.CurrentPlayer.AllEntities;

            foreach (var entity in allEntities)
            {
                entity.GravityAffect(gameTime, this.terrain);
            }

            foreach (var unit in UsersManager.CurrentPlayer.Units)
            {
                unit.Update(gameTime, this.terrain, allEntities);
            }

            this.details?.Update(gameTime);

            if (Input.KeyPressed(Keys.D1))
            {
                if (EntitySelector.HasPicked())
                {
                    EntitySelector.PlaceEntity();
                }
                else
                {
                    var unit = new Swordsman(Guid.NewGuid(), UsersManager.CurrentPlayer.Id, Vector3.Zero, Quaternion.Identity);
                    Client.Socket.Writer.Send(Message.Create(Service.AddUnit, UnitFactory.ToDto(unit)));
                    UsersManager.CurrentPlayer.Units.Add(unit);
                    UsersManager.CurrentPlayer.AllEntities.Add(unit);
                    EntitySelector.EntityPicked = unit;
                }
            }

            if (Input.LeftMouseClick())
            {
                if (EntitySelector.HasPicked())
                {
                    EntitySelector.PlaceEntity();
                }
                else
                {
                    EntitySelector.SelectEntity(
                        DisplayManager.Instance.GraphicsDevice,
                        this.camera.ProjectionMatrix,
                        this.camera.ViewMatrix,
                        allEntities);

                    if (EntitySelector.HasSelected())
                    {
                        var projectedPosition =
                            DisplayManager.Instance.GraphicsDevice.Viewport.Project(
                                EntitySelector.EntitySelected.Position,
                                this.camera.ProjectionMatrix,
                                this.camera.ViewMatrix,
                                Matrix.Identity);

                        this.details = new EntityDetailsLayout(EntitySelector.EntitySelected, PointTextures.TransparentBlackPoint, projectedPosition);
                    }
                }
            }

            if (EntitySelector.HasSelected())
            {
                if (Input.RightMouseDoubleClick)
                {
                    IEntity selected = EntitySelector.EntitySelected;
                    this.CommandSelectedEntity(selected, allEntities.Where(e => e != selected));
                }
            }

            if (this.details != null)
            {
                this.ProjectClickedEntity();
                this.ReadDetailsCommand();
            }

            EntitySelector.DragEntity(
                DisplayManager.Instance.GraphicsDevice,
                this.camera.ProjectionMatrix,
                this.camera.ViewMatrix,
                this.terrain);

            this.skybox.Update(gameTime);
            this.camera.Update(gameTime, this.terrain);
        }