Exemple #1
0
        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;
                    }
                }
            }
        }