private void OnAttack(AttackTargetMessage message) { if (m_CurrentTarget != null) { m_Renderer.Scene.Remove(m_CurrentTarget + "target"); var vessel = m_VesselRepository.GetByName(m_CurrentSelection); var target = m_VesselRepository.GetByName(m_CurrentTarget); if (vessel != null && target != null) { // get vessel position Vector vesselPositon = vessel.GetPosition(message.Time); // get the targets position Vector targetPosition = target.GetPosition(message.Time); // zero around vessel Vector vesselToTarget = targetPosition - vesselPositon; // get the facing so we can check weapons. Facing facingWeapons = vessel.GetHeading(message.Time).ToFacing(vesselToTarget); // get weapons var weapons = vessel.AvailableWeapons(facingWeapons, vesselToTarget.Length); // post firing. // send??? if (weapons.Any()) { m_Attacks.Add(new Attack(message.Time, m_CurrentTarget, vesselPositon)); m_Renderer.Scene.Add("Attack" + message.Time, m_CurrentTarget, "square", "target_highlight"); m_Bus.Send(new RequestPathMessage(m_CurrentTarget)); } } m_CurrentTarget = null; } }