Ejemplo n.º 1
0
        public void Update(IList objects)
        {
            MultipleVector3 res = getter((TObject)objects[0]);

            for (int i = 1; i < objects.Count; i++)
            {
                if (getter((TObject)objects[i]).X != res.X)
                {
                    res.X = new Multiple <float>();
                }

                if (getter((TObject)objects[i]).Y != res.Y)
                {
                    res.Y = new Multiple <float>();
                }

                if (getter((TObject)objects[i]).Z != res.Z)
                {
                    res.Z = new Multiple <float>();
                }

                if (res == new MultipleVector3())
                {
                    break;
                }
            }

            prevValue = res;
            Value     = res;
        }
Ejemplo n.º 2
0
        public void ApplyIfChanged(IList objects, EditorSceneBase scene = null)
        {
            if (Value != prevValue)
            {
                var infos = new List <EditorSceneBase.RevertableMassPropertyChange <TObject, Vector3> .Info>();

                for (int i = 0; i < objects.Count; i++)
                {
                    var value      = getter((TObject)objects[i]);
                    var _prevValue = value;

                    if (Value.X != value.X)
                    {
                        value.X = Value.X.SharedValue;
                    }

                    if (Value.Y != value.Y)
                    {
                        value.Y = Value.Y.SharedValue;
                    }

                    if (Value.Z != value.Z)
                    {
                        value.Z = Value.Z.SharedValue;
                    }

                    if (_prevValue != value)
                    {
                        infos.Add(new EditorSceneBase.RevertableMassPropertyChange <TObject, Vector3> .Info((TObject)objects[i], _prevValue));

                        setter((TObject)objects[i], value);
                    }
                }

                prevValue = Value;

                if (infos.Count > 0)
                {
                    scene?.AddToUndo(new EditorSceneBase.RevertableMassPropertyChange <TObject, Vector3>(getter, setter, infos.ToArray()));
                }
            }
        }