示例#1
0
        public void MouseDown(Vector2 mouseFieldPos)
        {
            _mouseDownPos = ToDiscret(mouseFieldPos);
            foreach (var streamingVis in StreamingComponents)
            {
                if (streamingVis.Hit(mouseFieldPos))
                {
                    int pin;
                    if (streamingVis.MouseSelectInput(_mouseDownPos, out pin))
                    {
                        _wireCreator = new InputWireCreator(streamingVis, pin, EmploymentMatrix);
                        Childrens.Insert(0, _wireCreator.Wire);
                        return;
                    }
                    if (streamingVis.MouseSelectOutput(_mouseDownPos, out pin))
                    {
                        _wireCreator = new OutputWireCreator(streamingVis, pin, EmploymentMatrix);
                        Childrens.Insert(0, _wireCreator.Wire);
                        return;
                    }

                    _dragStreamingVisual  = new MouseDragVisualObject(streamingVis, _mouseDownPos);
                    streamingVis.IsSelect = !streamingVis.IsSelect;
                    return;
                }
            }
            SelectRectangle.Translate = ToDiscret(mouseFieldPos);
            SelectRectangle.IsVisible = true;
            SelectRectangle.Shape     = new Vector2[0];
        }
示例#2
0
        public void MouseUp(Vector2 mouseFieldPos)
        {
            SelectRectangle.IsVisible = false;
            var discratePos = ToDiscret(mouseFieldPos);

            foreach (var streamingVis in StreamingComponents)
            {
                if (streamingVis.Hit(discratePos, SelectRectangle.Translate))
                {
                    streamingVis.IsSelect = true;
                }
            }
            var mouseUpPos = ToDiscret(mouseFieldPos);

            if (_dragStreamingVisual != null)
            {
                _dragStreamingVisual.MouseMovePos = mouseUpPos;
                _dragStreamingVisual.Dispose();
                _dragStreamingVisual = null;
            }
            if (_wireCreator != null)
            {
                _wireCreator.MouseMovePos = mouseUpPos;
                _wireCreator.Connecting();
                var wire = _wireCreator.Wire;
                var isOutputWireCreator = _wireCreator is OutputWireCreator;
                var isInputWireCreator  = _wireCreator is InputWireCreator;

                _wireCreator.Dispose();
                _wireCreator = null;
                foreach (var streamingVis in StreamingComponents)
                {
                    if (!streamingVis.Hit(mouseFieldPos))
                    {
                        continue;
                    }
                    if (isOutputWireCreator)
                    {
                        for (int i = 0; i < streamingVis.InCount; i++)
                        {
                            var div = streamingVis.InputPosition(i) - _mouseDownPos;
                            if (streamingVis.Inputs[i] == null &&
                                Math.Abs(div.X) * 2 < Delta && Math.Abs(div.Y) * 2 < Delta)
                            {
                                wire.ConnectTo(0, streamingVis, i);
                                Wires.Add(wire);
                                break;
                            }
                        }
                    }
                    else if (isInputWireCreator)
                    {
                        for (int i = 0; i < streamingVis.OutCount; i++)
                        {
                            var div = streamingVis.OutputPosition(i) - _mouseDownPos;
                            if (streamingVis.Outputs[i] == null &&
                                Math.Abs(div.X) * 2 < Delta && Math.Abs(div.Y) * 2 < Delta)
                            {
                                streamingVis.ConnectTo(i, wire, 0);
                                Wires.Add(wire);
                                break;
                            }
                        }
                    }
                }
            }
        }
示例#3
0
 void Awake()
 {
     instance = (WireCreator)Singleton.Setup(this, instance);
 }