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(); }
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 = Rotations[i].eulerAngles * Mathf.Deg2Rad; FirstSelected.Source.AddUnit(NewUnit); NewUnit.Instantiate(); FirstSelected.Refresh(); } }
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(); }
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; }