void UpdatePortInput(ShaderPort port) { var inputView = m_PortInputContainer.OfType <PortInputView>().First(x => Equals(x.slot, port.slot)); var currentRect = new Rect(inputView.style.positionLeft, inputView.style.positionTop, inputView.style.width, inputView.style.height); var targetRect = new Rect(0.0f, 0.0f, port.layout.width, port.layout.height); targetRect = port.ChangeCoordinatesTo(inputView.shadow.parent, targetRect); var centerY = targetRect.center.y; var centerX = targetRect.xMax - currentRect.width; currentRect.center = new Vector2(centerX, centerY); inputView.style.positionTop = currentRect.yMin; var newHeight = inputView.parent.layout.height; foreach (var element in inputView.parent.Children()) { newHeight = Mathf.Max(newHeight, element.style.positionTop + element.layout.height); } if (Math.Abs(inputView.parent.style.height - newHeight) > 1e-3) { inputView.parent.style.height = newHeight; } }
public bool FindPort(SlotReference slotRef, out ShaderPort port) { port = inputContainer.Query <ShaderPort>().ToList() .Concat(outputContainer.Query <ShaderPort>().ToList()) .First(p => p.slot.slotReference.Equals(slotRef)); return(port != null); }
public static Port Create(Orientation orientation, Direction direction, Type type, IEdgeConnectorListener connectorListener) { var port = new ShaderPort(orientation, direction, type) { m_EdgeConnector = new EdgeConnector <Edge>(connectorListener), }; port.AddManipulator(port.m_EdgeConnector); return(port); }
public static Port Create(MaterialSlot slot, IEdgeConnectorListener connectorListener) { var port = new ShaderPort(Orientation.Horizontal, slot.isInputSlot ? Direction.Input : Direction.Output, null) { m_EdgeConnector = new EdgeConnector <Edge>(connectorListener), }; port.AddManipulator(port.m_EdgeConnector); port.slot = slot; port.portName = slot.displayName; port.visualClass = slot.concreteValueType.ToClassName(); return(port); }
void AddSlots(IEnumerable <MaterialSlot> slots) { foreach (var slot in slots) { if (slot.hidden) { continue; } var port = ShaderPort.Create(slot, m_ConnectorListener); if (slot.isOutputSlot) { outputContainer.Add(port); } else { inputContainer.Add(port); } } }
void AddSlots(IEnumerable <MaterialSlot> slots) { foreach (var slot in slots) { if (slot.hidden) { continue; } var port = ShaderPort.Create(Orientation.Horizontal, slot.isInputSlot ? Direction.Input : Direction.Output, null, m_ConnectorListener); port.portName = slot.displayName; port.userData = slot; port.visualClass = slot.concreteValueType.ToClassName(); if (slot.isOutputSlot) { outputContainer.Add(port); } else { inputContainer.Add(port); } } }