public IRevertable Revert(EditorSceneBase scene) { int index = list.IndexOf(obj); list.RemoveAt(index); return(new RevertableSingleDeletion(obj, index, list)); }
public void HandleUndo(EditorSceneBase scene) { if (TryGetRevertable(out IRevertable revertable)) { scene.AddToUndo(revertable); } }
public IRevertable Revert(EditorSceneBase scene) { object currentValue = property.GetValue(obj); property.SetValue(obj, prevValue); return(new RevertablePropertyChange(property, obj, currentValue)); }
public MultiEditUIContainer(List <IEditableObject> objs, EditorSceneBase scene) { this.objs = objs; this.scene = scene; UpdateProperties(); }
public IRevertable Revert(EditorSceneBase scene) { object currentValue = list[index]; list[index] = prevValue; return(new RevertableEntryChange(index, list, currentValue)); }
public IRevertable Revert(EditorSceneBase scene) { object currentValue = dict[key]; dict[key] = prevValue; return(new RevertableDictEntryChange(key, dict, currentValue)); }
public void HandleUndo(EditorSceneBase scene) { foreach (CapturedProperty cp in capturedProperties) { if (!cp.info.GetValue(obj).Equals(cp.value)) { scene.AddToUndo(new RevertablePropertyChange(cp.info, obj, cp.value)); } } }
public override void Draw(GL_ControlModern control, Pass pass, EditorSceneBase editorScene) { if (pass == Pass.TRANSPARENT) { return; } bool hovered = editorScene.Hovered == this; if (IsNormalTanTransform) { control.UpdateModelMatrix(Matrix4.CreateScale(scale) * MatrixExenstion.CreateRotation(Normal, Tangent) * Matrix4.CreateTranslation(Selected ? editorScene.CurrentAction.NewPos(Position) : Position)); } else { control.UpdateModelMatrix(Matrix4.CreateScale(scale) * (Matrix4.CreateRotationX(rotate.X) * Matrix4.CreateRotationY(rotate.Y) * Matrix4.CreateRotationZ(rotate.Z)) * Matrix4.CreateTranslation(Selected ? editorScene.CurrentAction.NewPos(Position) : Position)); } Vector4 blockColor; Vector4 lineColor; if (hovered && Selected) { lineColor = hoverColor; } else if (hovered || Selected) { lineColor = selectColor; } else { lineColor = Color; } if (hovered && Selected) { blockColor = Color * 0.5f + hoverColor * 0.5f; } else if (hovered || Selected) { blockColor = Color * 0.5f + selectColor * 0.5f; } else { blockColor = Color; } Renderers.ColorBlockRenderer.Draw(control, pass, blockColor, lineColor, control.NextPickingColor()); }
public IRevertable Revert(EditorSceneBase scene) { IRevertable[] newRevertables = new IRevertable[revertables.Length]; int _i = 0; for (int i = revertables.Length - 1; i >= 0; i--) //Revertables are meant to be reverted in the reverse order (First In Last Out) { newRevertables[_i++] = revertables[i].Revert(scene); } return(new MultiRevertable(newRevertables)); }
public IRevertable Revert(EditorSceneBase scene) { RevertablePropertyInfo[] newInfos = new RevertablePropertyInfo[infos.Length]; for (int i = 0; i < infos.Length; i++) { object currentValue = infos[i].property.GetValue(infos[i].obj); newInfos[i] = new RevertablePropertyInfo(infos[i].property, infos[i].obj, currentValue); } return(new RevertableMulityPropertyChange(newInfos)); }
public IRevertable Revert(EditorSceneBase scene) { Info[] newInfos = new Info[infos.Length]; for (int i = 0; i < infos.Length; i++) { TValue prevValue = getter(infos[i].obj); setter(infos[i].obj, infos[i].value); newInfos[i] = new Info(infos[i].obj, prevValue); } return(new RevertableMassPropertyChange <TObject, TValue>(getter, setter, newInfos)); }
public IRevertable Revert(EditorSceneBase scene) //Remove added objects from their lists { uint var = 0; IList[] lists = new IList[infos.Length + singleInfos.Length]; int i_lists = 0; //Revert Lists RevertableDeletion.DeleteInListInfo[] deleteInfos = new RevertableDeletion.DeleteInListInfo[infos.Length]; int i_deleteInfos = 0; foreach (AddInListInfo info in infos) { deleteInfos[i_deleteInfos] = new RevertableDeletion.DeleteInListInfo(new RevertableDeletion.DeleteInfo[info.objs.Length], info.list); int i_info = 0; for (int i = 0; i < info.objs.Length; i++) { deleteInfos[i_deleteInfos].infos[i_info++] = new RevertableDeletion.DeleteInfo(info.objs[i], info.list.IndexOf(info.objs[i])); info.list.Remove(info.objs[i]); (info.objs[i] as IEditableObject)?.DeselectAll(scene.control); } lists[i_lists++] = info.list; i_deleteInfos++; } //Revert Singles RevertableDeletion.SingleDeleteInListInfo[] deleteSingleInfos = new RevertableDeletion.SingleDeleteInListInfo[singleInfos.Length]; i_deleteInfos = 0; foreach (SingleAddInListInfo info in singleInfos) { deleteSingleInfos[i_deleteInfos++] = new RevertableDeletion.SingleDeleteInListInfo(info.obj, info.list.IndexOf(info.obj), info.list); info.list.Remove(info.obj); lists[i_lists++] = info.list; (info.obj as IEditableObject)?.DeselectAll(scene.control); } scene.UpdateSelection(var); scene.ListChanged?.Invoke(this, new ListChangedEventArgs(lists)); return(new RevertableDeletion(deleteInfos, deleteSingleInfos)); }
public IRevertable Revert(EditorSceneBase scene) { RevertableScaleChange revertable = new RevertableScaleChange(new ScaleInfo[scaleInfos.Length]); for (int i = 0; i < scaleInfos.Length; i++) { scaleInfos[i].obj.SetTransform(scaleInfos[i].pos, null, scaleInfos[i].scale, scaleInfos[i].part, out Vector3? prevPos, out Vector3? prevRot, out Vector3? prevScale); revertable.scaleInfos[i] = new ScaleInfo( scaleInfos[i].obj, scaleInfos[i].part, prevPos, prevScale); } return(revertable); }
public IRevertable Revert(EditorSceneBase scene) { RevertablePosChange revertable = new RevertablePosChange(new PosInfo[posInfos.Length]); for (int i = 0; i < posInfos.Length; i++) { posInfos[i].obj.SetTransform(posInfos[i].pos, null, null, posInfos[i].part, out Vector3? prevPos, out Vector3? prevRot, out Vector3? prevScale); revertable.posInfos[i] = new PosInfo( posInfos[i].obj, posInfos[i].part, prevPos.Value); } return(revertable); }
public IRevertable Revert(EditorSceneBase scene) { uint var = 0; IDictionary[] dicts = new IDictionary[infos.Length + singleInfos.Length]; int i_dicts = 0; //Revert Lists RevertableDictDeletion.DeleteInDictInfo[] deleteInfos = new RevertableDictDeletion.DeleteInDictInfo[infos.Length]; int i_deleteInfos = 0; foreach (AddInDictInfo info in infos) { deleteInfos[i_deleteInfos] = new RevertableDictDeletion.DeleteInDictInfo(new RevertableDictDeletion.DeleteInfo[info.infos.Length], info.dict); int i_info = 0; for (int i = info.infos.Length - 1; i >= 0; i--) { deleteInfos[i_deleteInfos].infos[i_info++] = new RevertableDictDeletion.DeleteInfo(info.infos[i].obj, info.infos[i].key); info.dict.Remove(info.infos[i].key); (info.infos[i].obj as IEditableObject)?.DeselectAll(scene.control); } dicts[i_dicts++] = info.dict; i_deleteInfos++; } //Revert Singles RevertableDictDeletion.SingleDeleteInDictInfo[] deleteSingleInfos = new RevertableDictDeletion.SingleDeleteInDictInfo[singleInfos.Length]; i_deleteInfos = 0; foreach (SingleAddInDictInfo info in singleInfos) { deleteSingleInfos[i_deleteInfos++] = new RevertableDictDeletion.SingleDeleteInDictInfo(info.obj, info.key, info.dict); info.dict.Remove(info.key); dicts[i_dicts++] = info.dict; (info.obj as IEditableObject)?.DeselectAll(scene.control); } scene.UpdateSelection(var); scene.DictChanged?.Invoke(this, new DictChangedEventArgs(dicts)); return(new RevertableDictDeletion(deleteInfos, deleteSingleInfos)); }
public IRevertable Revert(EditorSceneBase scene) { RevertableRotChange revertable = new RevertableRotChange(new RotInfo[rotInfos.Length]); for (int i = 0; i < rotInfos.Length; i++) { rotInfos[i].obj.SetTransform(rotInfos[i].pos, rotInfos[i].rot, null, rotInfos[i].part, out Vector3? prevPos, out Vector3? prevRot, out Vector3? prevScale); revertable.rotInfos[i] = new RotInfo( rotInfos[i].obj, rotInfos[i].part, prevPos, prevRot); } return(revertable); }
public override void Draw(GL_ControlLegacy control, Pass pass, EditorSceneBase editorScene) { if (pass == Pass.TRANSPARENT) { return; } bool hovered = editorScene.Hovered == this; control.UpdateModelMatrix(Matrix4.CreateScale(0.5f) * Matrix4.CreateTranslation(Selected ? editorScene.CurrentAction.NewPos(position) : position)); Vector4 blockColor; Vector4 lineColor; if (hovered && Selected) { lineColor = hoverColor; } else if (hovered || Selected) { lineColor = selectColor; } else { lineColor = Color; } if (hovered && Selected) { blockColor = Color * 0.5f + hoverColor * 0.5f; } else if (hovered || Selected) { blockColor = Color * 0.5f + selectColor * 0.5f; } else { blockColor = Color; } Renderers.ColorBlockRenderer.Draw(control, pass, blockColor, lineColor, control.NextPickingColor()); }
public IRevertable Revert(EditorSceneBase scene) { IDictionary[] dicts = new IDictionary[infos.Length + singleInfos.Length]; int i_dicts = 0; //Revert Lists RevertableDictAddition.AddInDictInfo[] addInfos = new RevertableDictAddition.AddInDictInfo[infos.Length]; int i_addInfos = 0; foreach (DeleteInDictInfo info in infos) { addInfos[i_addInfos] = new RevertableDictAddition.AddInDictInfo(new RevertableDictAddition.AddInfo[info.infos.Length], info.dict); int i_info = 0; for (int i = info.infos.Length - 1; i >= 0; i--) { addInfos[i_addInfos].infos[i_info++] = new RevertableDictAddition.AddInfo(info.infos[i].obj, info.infos[i].key); info.dict.Add(info.infos[i].key, info.infos[i].obj); } dicts[i_dicts++] = info.dict; i_addInfos++; } //Revert Singles RevertableDictAddition.SingleAddInDictInfo[] addSingleInfos = new RevertableDictAddition.SingleAddInDictInfo[singleInfos.Length]; i_addInfos = 0; foreach (SingleDeleteInDictInfo info in singleInfos) { addSingleInfos[i_addInfos++] = new RevertableDictAddition.SingleAddInDictInfo(info.obj, info.key, info.dict); info.dict.Add(info.key, info.obj); dicts[i_dicts++] = info.dict; } scene.control.Refresh(); scene.DictChanged?.Invoke(this, new DictChangedEventArgs(dicts)); return(new RevertableDictAddition(addInfos, addSingleInfos)); }
public IRevertable Revert(EditorSceneBase scene) //Insert all deleted objects back in { IList[] lists = new IList[infos.Length + singleInfos.Length]; int i_lists = 0; //Revert Lists RevertableAddition.AddInListInfo[] addInfos = new RevertableAddition.AddInListInfo[infos.Length]; int i_addInfos = 0; foreach (DeleteInListInfo info in infos) { addInfos[i_addInfos] = new RevertableAddition.AddInListInfo(new object[info.infos.Length], info.list); int i_info = 0; for (int i = info.infos.Length - 1; i >= 0; i--) //loop through backwards so the indices aren't messed up { addInfos[i_addInfos].objs[i_info++] = info.infos[i].obj; info.list.Insert(info.infos[i].index, info.infos[i].obj); } lists[i_lists++] = info.list; i_addInfos++; } //Revert Singles RevertableAddition.SingleAddInListInfo[] addSingleInfos = new RevertableAddition.SingleAddInListInfo[singleInfos.Length]; i_addInfos = 0; foreach (SingleDeleteInListInfo info in singleInfos) { addSingleInfos[i_addInfos++] = new RevertableAddition.SingleAddInListInfo(info.obj, info.list); info.list.Insert(info.index, info.obj); lists[i_lists++] = info.list; } scene.control.Refresh(); scene.ListChanged?.Invoke(this, new ListChangedEventArgs(lists)); return(new RevertableAddition(addInfos, addSingleInfos)); }
public IRevertable Revert(EditorSceneBase scene) { List <object> objs = new List <object>(); for (int i = 0; i < count; i++) { objs.Add(list[originalIndex]); list.RemoveAt(originalIndex); } int index = originalIndex + offset; foreach (object obj in objs) { list.Insert(index, obj); index++; } scene.ListChanged?.Invoke(this, new ListChangedEventArgs(new IList[] { list })); return(new RevertableReordering(originalIndex + offset, count, -offset, list)); }
public SelectionSet(EditorSceneBase scene) { this.scene = scene; }
public virtual void Draw(GL_ControlLegacy control, Pass pass, EditorSceneBase editorScene) { }
public virtual void Draw(GL_ControlModern control, Pass pass, EditorSceneBase editorScene) { }
public virtual void StartDragging(DragActionType actionType, int hoveredPart, EditorSceneBase scene) { }
public static void SetupUIForMultiEditing(EditorSceneBase scene, ObjectUIControl control, List <IEditableObject> objects) { control.AddObjectUIContainer(new MultiEditUIContainer(objects), "Editable Object"); }
public virtual void MultiEditSelected(EditorSceneBase scene, MultiEditManager manager) { }
public virtual bool TrySetupObjectUIControl(EditorSceneBase scene, ObjectUIControl objectUIControl) => false;
public virtual void DeleteSelected(EditorSceneBase scene, DeletionManager manager, IList list) { }
public IRevertable Revert(EditorSceneBase scene) { return(new DoubleRevertable(second.Revert(scene), first.Revert(scene))); }
public IRevertable Revert(EditorSceneBase scene) { list.Insert(index, obj); return(new RevertableSingleAddition(obj, list)); }