GameObject[] ReadUnitsStorage(UnitsStorage Data)
        {
            List <GameObject> CreatedUnits = new List <GameObject>();

            if (Data != null && Data.Units != null)
            {
                for (int i = 0; i < Data.Units.Length; i++)
                {
                    SaveLua.Army.Unit NewUnit = new SaveLua.Army.Unit();
                    NewUnit.Name    = SaveLua.Army.Unit.GetFreeName("UNIT_");
                    NewUnit.type    = Data.Units[i].ID;
                    NewUnit.orders  = Data.Units[i].orders;
                    NewUnit.platoon = Data.Units[i].platoon;

                    if (!ScmapEditor.Current.Teren.terrainData.bounds.Contains(ScmapEditor.Current.Teren.transform.InverseTransformPoint(Data.Units[i].pos)))
                    {
                        Vector3 Offset = ScmapEditor.Current.Teren.transform.TransformPoint(ScmapEditor.Current.Teren.terrainData.bounds.center) - Data.Center;
                        Offset.y           = 0;
                        Data.Units[i].pos += Offset;
                    }

                    NewUnit.Position    = ScmapEditor.WorldPosToScmap(Data.Units[i].pos);
                    NewUnit.Orientation = UnitInstance.ScmapRotationFromRotation(Data.Units[i].rot);

                    FirstSelected.Source.AddUnit(NewUnit);
                    NewUnit.Instantiate();

                    SnapAction(NewUnit.Instance.transform, NewUnit.Instance.gameObject);
                    CreatedUnits.Add(NewUnit.Instance.gameObject);
                }
            }

            return(CreatedUnits.ToArray());
        }
        public void Place(Vector3[] Positions, Quaternion[] Rotations, Vector3[] Scales, bool RegisterUndo)
        {
            if (FirstSelected == null)
            {
                ShowGroupError();
                return;
            }

            if (Positions.Length > 0 && RegisterUndo)
            {
                Undo.RegisterUndo(new UndoHistory.HistoryUnitsRemove(), new UndoHistory.HistoryUnitsRemove.UnitsRemoveParam(new SaveLua.Army.UnitsGroup[] { FirstSelected.Source }));
            }


            for (int i = 0; i < Positions.Length; i++)
            {
                if (RandomRotation.isOn)
                {
                    Rotations[i] = GetRandomRotation;
                }

                SaveLua.Army.Unit NewUnit = new SaveLua.Army.Unit();
                NewUnit.Name        = SaveLua.Army.Unit.GetFreeName("UNIT_");
                NewUnit.type        = SelectedUnit.CodeName;
                NewUnit.orders      = "";
                NewUnit.platoon     = "";
                NewUnit.Position    = ScmapEditor.WorldPosToScmap(Positions[i]);
                NewUnit.Orientation = UnitInstance.ScmapRotationFromRotation(Rotations[i]);

                FirstSelected.Source.AddUnit(NewUnit);
                NewUnit.Instantiate();

                FirstSelected.Refresh();
            }
        }