public void attackLivingObject(LivingObject _Target, int _Damage)
 {
     if (Configuration.Configuration.isHost || Configuration.Configuration.isSinglePlayer)
     {
         _Target.onAttacked(this, _Damage);
     }
 }
        private static void handleUpdateObjectPositionMessage(NetIncomingMessage _Im)
        {
            var message = new UpdateObjectPositionMessage(_Im);

            var timeDelay = (float)(NetTime.Now - _Im.SenderConnection.GetLocalTime(message.MessageTime));

            GameLibrary.Object.LivingObject var_LivingObject = (GameLibrary.Object.LivingObject)GameLibrary.Map.World.World.world.getObject(message.Id);

            Client var_Client = Configuration.networkManager.getClient(_Im.SenderEndPoint);

            if (var_Client.PlayerObject == var_LivingObject)
            {
                if (var_LivingObject != null)
                {
                    if (var_LivingObject.LastUpdateTime < message.MessageTime)
                    {
                        //var_LivingObject.Position += (message.Velocity * timeDelay);
                        var_LivingObject.NextPosition = message.Position;// +(message.Velocity * timeDelay);
                        var_LivingObject.MoveUp       = message.MoveUp;
                        var_LivingObject.MoveDown     = message.MoveDown;
                        var_LivingObject.MoveLeft     = message.MoveLeft;
                        var_LivingObject.MoveRight    = message.MoveRight;
                        var_LivingObject.checkChangedBlock();

                        var_LivingObject.LastUpdateTime = message.MessageTime;
                    }
                }
                else
                {
                    //GameLibrary.Logger.Logger.LogErr("Object mit Id: " + message.Id + " konnte nicht im Quadtree gefunden werden -> Position wird nicht geupdatet");
                    //GameLibrary.Connection.Event.EventList.Add(new GameLibrary.Connection.Event(new GameLibrary.Connection.Message.RequestLivingObjectMessage(message.Id), GameLibrary.Connection.GameMessageImportance.UnImportant));
                }
            }
        }
 public void getInteracted(LivingObject _Interactor)
 {
     foreach (LivingObjectInteraction var_Interaction in this.interactions)
     {
         var_Interaction.doInteraction(_Interactor);
     }
 }
        public virtual void onAttacked(LivingObject _Attacker, int _DamageAmount)
        {
            this.damage(_DamageAmount);
            this.aggroSystem.addAggro(_Attacker, _DamageAmount * 100f);
            Vector3 knockBackVector = this.Position - _Attacker.Position;

            knockBackVector.X = knockBackVector.X / knockBackVector.Length() * 20;
            knockBackVector.Y = knockBackVector.Y / knockBackVector.Length() * 20;
            knockBackVector.Z = knockBackVector.Z / knockBackVector.Length() * 20;
            //this.knockBack(knockBackVector);

            Configuration.Configuration.networkManager.addEvent(new GameLibrary.Connection.Message.UpdateObjectPositionMessage(this), GameMessageImportance.VeryImportant);
            Configuration.Configuration.networkManager.addEvent(new GameLibrary.Connection.Message.UpdateObjectHealthMessage(this), GameMessageImportance.VeryImportant);

            this.checkChangedBlock();
        }
        private static void handleRequestLivingObjectMessage(NetIncomingMessage _Im)
        {
            var message = new RequestLivingObjectMessage(_Im);

            var timeDelay = (float)(NetTime.Now - _Im.SenderConnection.GetLocalTime(message.MessageTime));

            Client var_Client = Configuration.networkManager.getClient(_Im.SenderEndPoint);

            GameLibrary.Object.LivingObject var_LivingObject = (GameLibrary.Object.LivingObject)GameLibrary.Map.World.World.world.getObject(message.Id);

            if (var_LivingObject != null)
            {
                Configuration.networkManager.SendMessageToClient(new UpdateObjectMessage(var_LivingObject), var_Client);
            }
            else
            {
                GameLibrary.Logger.Logger.LogErr("ServerIGameMessageManager->handleRequestLivingObjectMessage(...) LivingObject mit Id " + message.Id + " existiert nicht!");
            }
        }