Exemple #1
0
        /// <summary>Trims given list of units to return a list that fits the group's formation size</summary>
        private void TrimUnitsToFitFormationSetting(FormationSetting setting)
        {
            int trimCount = Mathf.Max(0, EnlistedUnits.Count - setting.Size);

            for (int i = 0; i < trimCount; i++)
            {
                EnlistedUnits.RemoveAt(EnlistedUnits.Count - 1);
            }
        }
        /// <summary>Updates the formation positions with formation setting</summary>
        private void UpdateFormationPositions(FormationSetting setting)
        {
            ClearFormationPositions();

            formationName = setting.Name;
            gizmoColor = setting.GizmoColor;
            gizmoRadius = setting.GizmoRadius;

            for (int i = 0; i < setting.Size; i++)
            {
                FormationPosition position = Instantiate(prefabFormationPosition, transform).GetComponent<FormationPosition>();
                position.transform.localPosition = setting.LocalPositions[i];
                position.SetGizmo(gizmoColor, gizmoRadius);
                formationPositions.Add(position);
            }
        }
        /// <summary>Tries outputting a setting with given name. Returns whether it was succesfull or not</summary>
        public static bool GetSettingWithName(this List <FormationSetting> settings, string name, out FormationSetting setting)
        {
            for (int i = 0; i < settings.Count; i++)
            {
                if (settings[i].Name == name)
                {
                    setting = settings[i];
                    return(true);
                }
            }
            setting = default;

            return(false);
        }
Exemple #4
0
 /// <summary>Called when the formation has been updated, it makes sure units move towards the new formation positions</summary>
 private void OnFormationUpdate(FormationSetting newSetting)
 {
     TrimUnitsToFitFormationSetting(newSetting);
     ReAssignUnits();
     MoveUnitsInFormation();
 }