Ejemplo n.º 1
0
        public void DestroyUnits(List <GameObject> MarkerObjects, bool RegisterUndo = true)
        {
            int Count = MarkerObjects.Count;

            if (RegisterUndo && MarkerObjects.Count > 0)
            {
                List <SaveLua.Army.UnitsGroup> AllGroups = new List <SaveLua.Army.UnitsGroup>();

                for (int i = 0; i < Count; i++)
                {
                    UnitInstance uinst = MarkerObjects[i].GetComponent <UnitInstance>();
                    if (!AllGroups.Contains(uinst.Owner.Parent))
                    {
                        AllGroups.Add(uinst.Owner.Parent);
                    }
                }
                Undo.RegisterUndo(new UndoHistory.HistoryUnitsRemove(), new UndoHistory.HistoryUnitsRemove.UnitsRemoveParam(AllGroups.ToArray()));
            }

            for (int i = 0; i < Count; i++)
            {
                //DestroyImmediate(MarkerObjects[i]);
                SaveLua.Army.Unit u = MarkerObjects[i].GetComponent <UnitInstance>().Owner;
                u.ClearInstance();
                if (u.Parent != null)
                {
                    u.Parent.RemoveUnit(u);
                }
            }

            SelectionManager.Current.CleanSelection();
            GoToSelection();
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        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 = Rotations[i].eulerAngles * Mathf.Deg2Rad;

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

                FirstSelected.Refresh();
            }
        }
Ejemplo n.º 4
0
        public void ReplaceSelected()
        {
            if (FirstSelected == null)
            {
                ShowGroupError();

                return;
            }

            if (string.IsNullOrEmpty(SelectedUnit.CodeName))
            {
                ShowUnitError();
                return;
            }

            List <SaveLua.Army.UnitsGroup> AllGroups = new List <SaveLua.Army.UnitsGroup>();
            List <GameObject> AllObjects             = SelectionManager.GetAllSelectedGameobjects();
            int Count = AllObjects.Count;

            if (Count == 0)
            {
                return;
            }

            for (int i = 0; i < Count; i++)
            {
                UnitInstance uinst = AllObjects[i].GetComponent <UnitInstance>();
                if (!AllGroups.Contains(uinst.Owner.Parent))
                {
                    AllGroups.Add(uinst.Owner.Parent);
                }
            }
            Undo.RegisterUndo(new UndoHistory.HistoryUnitsRemove(), new UndoHistory.HistoryUnitsRemove.UnitsRemoveParam(AllGroups.ToArray()));


            Vector3[]    Positions = new Vector3[Count];
            Quaternion[] Rotations = new Quaternion[Count];
            Vector3[]    Scales    = new Vector3[Count];

            for (int i = 0; i < Count; i++)
            {
                UnitInstance uinst = AllObjects[i].GetComponent <UnitInstance>();

                Positions[i] = uinst.transform.position;
                Rotations[i] = uinst.transform.rotation;
                Scales[i]    = uinst.transform.localScale;

                SaveLua.Army.Unit u = uinst.Owner;

                u.ClearInstance();
                u.Parent.RemoveUnit(u);
            }

            Place(Positions, Rotations, Scales, false);
            GoToSelection();
        }
Ejemplo n.º 5
0
        public void OnDropUnit()
        {
            if (ResourceBrowser.DragedObject == null || ResourceBrowser.DragedObject.ContentType != ResourceObject.ContentTypes.Unit)
            {
                return;
            }

            SelectedUnit            = UnitBrowser.GetDragUnit();
            SelectedUnitSource      = new SaveLua.Army.Unit();
            SelectedUnitSource.Name = SelectedUnit.CodeName;
            SelectedUnitSource.type = SelectedUnit.CodeName;

            UnitTitle.text = SelectedUnit.CodeName;
            UnitDesc.text  = UnitBrowser.SortDescription(SelectedUnit);

            UnitBg.texture   = UnitBrowser.IconBackgrounds[SelectedUnit.Icon];
            UnitIcon.texture = UnitBrowser.GetDragUnitIcon();
            UnitIcon.enabled = UnitIcon.texture != Texture2D.whiteTexture;
        }