Esempio n. 1
0
            public IRevertable Revert(EditorSceneBase scene)
            {
                int index = list.IndexOf(obj);

                list.RemoveAt(index);
                return(new RevertableSingleDeletion(obj, index, list));
            }
Esempio n. 2
0
 public void HandleUndo(EditorSceneBase scene)
 {
     if (TryGetRevertable(out IRevertable revertable))
     {
         scene.AddToUndo(revertable);
     }
 }
Esempio n. 3
0
            public IRevertable Revert(EditorSceneBase scene)
            {
                object currentValue = property.GetValue(obj);

                property.SetValue(obj, prevValue);
                return(new RevertablePropertyChange(property, obj, currentValue));
            }
Esempio n. 4
0
            public MultiEditUIContainer(List <IEditableObject> objs, EditorSceneBase scene)
            {
                this.objs  = objs;
                this.scene = scene;

                UpdateProperties();
            }
Esempio n. 5
0
            public IRevertable Revert(EditorSceneBase scene)
            {
                object currentValue = list[index];

                list[index] = prevValue;
                return(new RevertableEntryChange(index, list, currentValue));
            }
Esempio n. 6
0
            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));
         }
     }
 }
Esempio n. 8
0
        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());
        }
Esempio n. 9
0
            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));
            }
Esempio n. 10
0
            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));
            }
Esempio n. 11
0
            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));
            }
Esempio n. 12
0
            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));
            }
Esempio n. 13
0
            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);
            }
Esempio n. 14
0
            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);
            }
Esempio n. 15
0
            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));
            }
Esempio n. 16
0
            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);
            }
Esempio n. 17
0
        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());
        }
Esempio n. 18
0
            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));
            }
Esempio n. 19
0
            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));
            }
Esempio n. 20
0
            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));
            }
Esempio n. 21
0
 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)
 {
 }
Esempio n. 29
0
 public IRevertable Revert(EditorSceneBase scene)
 {
     return(new DoubleRevertable(second.Revert(scene), first.Revert(scene)));
 }
Esempio n. 30
0
 public IRevertable Revert(EditorSceneBase scene)
 {
     list.Insert(index, obj);
     return(new RevertableSingleAddition(obj, list));
 }