protected virtual void OnEnable() { _transform = target as Transform; bool useDefault = true; foreach (var t in targets) { var item = (t as Transform)?.GetComponent <IEditableItemBehavior>(); if (item != null) { useDefault = false; if (_primaryItem == null) { _primaryItem = item; _positionType = item.EditorPositionType; _rotationType = item.EditorRotationType; _scaleType = item.EditorScaleType; } else { // only transform on axes supported by all if (item.EditorPositionType < _positionType) { _positionType = item.EditorPositionType; } if (item.EditorRotationType < _rotationType) { _rotationType = item.EditorRotationType; } if (item.EditorScaleType < _scaleType) { _scaleType = item.EditorScaleType; } _secondaryItems.Add(new SecondaryItem { Transform = t as Transform, Item = item, Offset = item.GetEditorPosition() - _primaryItem.GetEditorPosition(), }); } } } if (useDefault) { _defaultEditor = CreateEditor(targets, Type.GetType("UnityEditor.TransformInspector, UnityEditor")); } }
protected void RenameReflectedFields(string undoName, IEditableItemBehavior item, List <MemberInfo> mis, string oldName, string newName) { foreach (var mi in mis) { string fieldVal = GetMemberValue(mi, item.ItemData); if (fieldVal == oldName) { Undo.RecordObject(item as Object, undoName); switch (mi) { case FieldInfo fi: fi.SetValue(item.ItemData, newName); break; case PropertyInfo pi: pi.SetValue(item.ItemData, newName); break; } } } }