private void M_SelectUnits() { m_player.M_ClearSelection(); // Key is ID, val is unit Dictionary <int, BaseUnit> hitUnits = new Dictionary <int, BaseUnit>(); // Single click RaycastHit[] hits = InputManager.Instance.M_GetMousePointerHits(); if (hits.Length > 0) { foreach (RaycastHit hit in hits) { BaseUnit hitUnit = hit.transform.GetComponentInParent <BaseUnit>(); if (hitUnit) { if (hitUnit.m_faction == m_player.m_faction) { hitUnits[hitUnit.GetInstanceID()] = hitUnit; } } } } // Selection box if (m_isDragging) { foreach (var kvp in m_player.M_GetAllUnits()) { if (IsWithinSelectionBounds(kvp.Value.gameObject)) { hitUnits[kvp.Key] = kvp.Value; } } } m_isDragging = false; m_player.M_SelectUnits(hitUnits.Values.ToList()); // Can be improved }
public void M_AddUnit(BaseUnit unit) { m_units.Add(unit.GetInstanceID(), unit); // Will fail in case of duplicate. TODO handle? }