public void ModifyOp(GameObject obj, RobotCreated_Operation_Name opName) { RobotCreated_Operation op = Operations.FindLast(x => x.Op == opName); if (op != null) { op.to_Pos = obj.transform.localPosition; op.to_Rot = obj.transform.localRotation; op.to_Scale = obj.transform.localScale; } }
public void AddOpDelete(Btn_RobotCreated_Choosen choosen) { Redo_Operations.Clear(); RedoBtn.interactable = false; RobotCreated_Operation op = SetOpInfos(choosen, RobotCreated_Operation_Name.Delete); op.tag = tagIndex; for (int i = 0; i < Operations.Count; i++) { if (Operations[i].controlObj == op.controlObj) { Operations[i].tag = tagIndex; } } tagIndex++; }
private RobotCreated_Operation SetOpInfos(Btn_RobotCreated_Choosen choosen, RobotCreated_Operation_Name opName) { if (Operations.Count >= MaxCount) { Operations.RemoveAt(0); } if (choosen != null) { this.GetComponent <Button>().interactable = true; GameObject obj = choosen.myObj; RobotCreated_Operation op = new RobotCreated_Operation(); op.name = choosen.myObj.name.Replace("(Clone)", ""); op.controlObj = choosen; op.Op = opName; op.origin_Pos = obj.transform.localPosition; op.origin_Rot = obj.transform.localRotation; op.origin_Scale = obj.transform.localScale; Operations.Add(op); return(op); } return(null); }
public void Undo() //Undo { if (Operations.Count <= 0) { return; } RobotCreated_Operation op = Operations[Operations.Count - 1]; switch (op.Op) { case RobotCreated_Operation_Name.Create: if (op.controlObj != null) { root.DeleteObjSpecial(op.controlObj); } break; case RobotCreated_Operation_Name.Copy: if (op.controlObj != null) { root.DeleteObjSpecial(op.controlObj); } break; case RobotCreated_Operation_Name.Delete: if (op.name != "") { Btn_RobotCreated_Choosen choosen = root.CreateChoosenBtn(op.name); choosen.myObj.transform.localPosition = op.origin_Pos; choosen.myObj.transform.localRotation = op.origin_Rot; choosen.myObj.transform.localScale = op.origin_Scale; for (int i = 0; i < Operations.Count; i++) { if (Operations[i].tag == op.tag) { Operations[i].controlObj = choosen; } } } break; case RobotCreated_Operation_Name.Move: if (op.controlObj != null && op.controlObj.myObj != null) { op.controlObj.myObj.transform.localPosition = op.origin_Pos; } break; case RobotCreated_Operation_Name.Resize: if (op.controlObj != null && op.controlObj.myObj != null) { op.controlObj.myObj.transform.localScale = op.origin_Scale; } break; case RobotCreated_Operation_Name.Rotate: if (op.controlObj != null && op.controlObj.myObj != null) { op.controlObj.myObj.transform.localRotation = op.origin_Rot; } break; } if (Redo_Operations.Count >= Redo_MaxCount) { Redo_Operations.RemoveAt(0); } Redo_Operations.Add(op); RedoBtn.interactable = true; Operations.Remove(op); if (Operations.Count <= 0) { this.gameObject.GetComponent <Button>().interactable = false; } }