Exemple #1
0
        protected virtual void OnEnable()
        {
            _transform = target as Transform;

            // use default inspector. we do that when no vpe components are selected.
            var useDefault = true;

            // loop through selected objects
            foreach (var t in targets)
            {
                var itemTransform = t as Transform;
                if (!itemTransform)
                {
                    continue;
                }

                var item              = itemTransform.GetComponent <IMainRenderableComponent>();
                var isRenderableItem  = item != null;
                var overrideTransform = isRenderableItem && item.OverrideTransform;
                _itemSelected = itemTransform.GetComponent <IMainComponent>() != null;
                useDefault    = useDefault && (!_itemSelected || !overrideTransform) && itemTransform.GetComponent <IMeshComponent>() == null;

                // must be main but not the table itself
                if (isRenderableItem && item is not TableComponent)
                {
                    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"));
            }
        }
Exemple #2
0
        protected virtual void OnEnable()
        {
            _transform = target as Transform;

            // use default inspector. we do that when no vpe-authoring items are selected.
            var useDefault = true;

            // loop through selected objects
            foreach (var t in targets)
            {
                // must be main but not the table itself
                var item = (t as Transform)?.GetComponent <IItemMainAuthoring>();
                useDefault = useDefault && (t as Transform)?.GetComponent <IItemAuthoring>() == null;
                if (item != null && !(item is TableAuthoring))
                {
                    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"));
            }
        }
Exemple #3
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"));
            }
        }
Exemple #4
0
        private static Vector3 HandlePosition(Vector3 position, ItemDataTransformType type, Quaternion rotation, float handleSize, float snap)
        {
            var forward = rotation * Vector3.forward;
            var right   = rotation * Vector3.right;
            var up      = rotation * Vector3.up;
            var newPos  = position;

            switch (type)
            {
            case ItemDataTransformType.TwoD: {
                Handles.color = Handles.xAxisColor;
                newPos        = Handles.Slider(newPos, right);

                Handles.color = Handles.yAxisColor;
                newPos        = Handles.Slider(newPos, up);

                Handles.color = Handles.zAxisColor;
                newPos        = Handles.Slider2D(
                    newPos,
                    forward,
                    right,
                    up,
                    HandleUtility.GetHandleSize(position) * handleSize,
                    Handles.RectangleHandleCap,
                    snap);
                break;
            }

            case ItemDataTransformType.ThreeD: {
                newPos = Handles.PositionHandle(newPos, rotation);
                break;
            }
            }

            return(newPos);
        }
Exemple #5
0
 public static Vector3 HandlePosition(Vector3 position, ItemDataTransformType type, Quaternion rotation)
 {
     return(HandlePosition(position, type, rotation, 0.2f, 0.0f));
 }