void KillableTargetActor::ProcessMessage(const dtGame::Message& message)
{
   // HANDLE GAME EVENT MESSAGE - "TankFired"
   if (message.GetMessageType() == dtGame::MessageType::INFO_GAME_EVENT)
   {
      const dtGame::GameEventMessage& eventMsg =
         static_cast<const dtGame::GameEventMessage&>(message);

      // Note, we are using strings which aren't constants.  In a real application, these
      // event names should be stored in some sort of shared place and should be constants...
      if (eventMsg.GetGameEvent() != 0 && eventMsg.GetGameEvent()->GetName() == "TankFired")
      {
         if (mIsTargeted && mCurrentHealth > 0)
         {
            SetCurrentHealth(GetCurrentHealth() - 25);
         }
      }
      // test our shaders
      else if (eventMsg.GetGameEvent() != 0 && eventMsg.GetGameEvent()->GetName() == "TestShaders")
      {
         // Note, this behavior is now done in the InputComponent.cpp using the new Shader method.
         //dtCore::ShaderManager::GetInstance().Clear();
         //dtCore::ShaderManager::GetInstance().LoadShaderDefinitions("Shaders/TutorialShaderDefs.xml", false);
         //ApplyMyShader();
      }
      // reset me!
      else if (eventMsg.GetGameEvent() != 0 && eventMsg.GetGameEvent()->GetName() == "ResetStuff")
      {
         SetTransform(mOriginalPosition);
         ResetState();
      }
   }
   // HANDLE TARGET CHANGED MESSAGE
   else if (message.GetMessageType() == TutorialMessageType::TANK_TARGET_CHANGED)
   {
      const TargetChangedMessage& targetChanged = static_cast<const TargetChangedMessage&>(message);
      mIsTargeted = (targetChanged.GetNewTargetUniqueId() ==  GetUniqueId());

      if (mIsTargeted && mCurrentHealth > 0)
      {
         // Ahhhh! Get that gun outta my face!
         mCurrentShaderName = "Green";
      }
      else
      {
         //mCurrentShaderName = "Green";
         mCurrentShaderName = "Normal";
      }

      ApplyMyShader();
   }

}
void PlayerObject::Update(float deltatime, float global_speed, sf::Vector2f mousePos)
{
	//////////Movement
	if (sf::Keyboard::isKeyPressed(sf::Keyboard::W))
	{
		if (sf::Keyboard::isKeyPressed(sf::Keyboard::A) || sf::Keyboard::isKeyPressed(sf::Keyboard::D))
		{
			m_sprite->move(0.0f, -4.0f * deltatime * m_speed * global_speed);
		}
		else
		{
			m_sprite->move(0.0f, -5.0f * deltatime * m_speed * global_speed);
		}
	}
	if (sf::Keyboard::isKeyPressed(sf::Keyboard::S))
	{
		if (sf::Keyboard::isKeyPressed(sf::Keyboard::A) || sf::Keyboard::isKeyPressed(sf::Keyboard::D))
		{
			m_sprite->move(0.0f, 4.0f * deltatime * m_speed * global_speed);
		}
		else
		{
			m_sprite->move(0.0f, 5.0f * deltatime * m_speed * global_speed);
		}
	}
	if (sf::Keyboard::isKeyPressed(sf::Keyboard::A))
	{
		if (sf::Keyboard::isKeyPressed(sf::Keyboard::W) || sf::Keyboard::isKeyPressed(sf::Keyboard::S))
		{
			m_sprite->move(-4.0f * deltatime * m_speed * global_speed, 0.0f);
		}
		else
		{
			m_sprite->move(-5.0f * deltatime * m_speed * global_speed, 0.0f);
		}
	}
	if (sf::Keyboard::isKeyPressed(sf::Keyboard::D))
	{
		if (sf::Keyboard::isKeyPressed(sf::Keyboard::W) || sf::Keyboard::isKeyPressed(sf::Keyboard::S))
		{
			m_sprite->move(4.0f * deltatime * m_speed * global_speed, 0.0f);
		}
		else
		{
			m_sprite->move(5.0f * deltatime * m_speed * global_speed, 0.0f);
		}
	}


	//////////////Rotation
	//Your origin
	sf::Vector2f origin = m_sprite->getPosition();

	//Calculate the direction vector
	sf::Vector2f dirVec = sf::Vector2f(mousePos.x - origin.x, mousePos.y - origin.y);

	//Calculate the length^2
	float magSquare = std::sqrt((dirVec.x * dirVec.x) + (dirVec.y * dirVec.y));

	//Change the mag to 1 (you dont need the y for getting the angle
	dirVec.x = (dirVec.x) / magSquare;

	//Get the angle and change it to deg (SFML need deg)
	float rotAngle = std::acos(dirVec.x) * (180 / m_pi);

	if (m_sprite->getPosition().y < mousePos.y)
	{
		m_sprite->setRotation(90 + rotAngle);
		m_dirt_sprite1->setRotation(90 + rotAngle);
		m_dirt_sprite1->setColor( sf::Color(255,255,255,(255 * (GetCurrentHealth()/GetMaxHealth()))));
	}
	else if (m_sprite->getPosition().x == mousePos.x && m_sprite->getPosition().y == mousePos.y)
	{

	}
	else
	{
		m_sprite->setRotation(90 - rotAngle);
		m_dirt_sprite1->setRotation(90 - rotAngle);
		m_dirt_sprite1->setColor( sf::Color(255,255,255,(255 * (GetCurrentHealth() / GetMaxHealth()))));
			
	}

/*
	if (m_current_animation != nullptr)
	{
		m_current_animation->Update(deltatime);
	}
*/

	m_position = m_sprite->getPosition();

	/*if (HasCollider())
	{
		m_collider->m_position = m_sprite->getPosition();
	}*/

	if (m_dirt_texture != nullptr)
	{
		m_dirt_sprite1->setPosition(m_sprite->getPosition().x, m_sprite->getPosition().y);
	}

	if (m_animated)
	{
		UpdateFrame(deltatime);
	}
}