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")); } }
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")); } }
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")); } }
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); }
public static Vector3 HandlePosition(Vector3 position, ItemDataTransformType type, Quaternion rotation) { return(HandlePosition(position, type, rotation, 0.2f, 0.0f)); }