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; }
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())); } } }