Пример #1
0
        public MyMultilineConveyorEndpoint(MyCubeBlock myBlock)
        {
            ProfilerShort.Begin("MyMultilineConveyorEndpoint(...)");
            m_block = myBlock;

            MyConveyorLine.BlockLinePositionInformation[] positionInfo = MyConveyorLine.GetBlockLinePositions(myBlock);
            m_conveyorLines = new MyConveyorLine[positionInfo.Length];

            MyGridConveyorSystem conveyorSystem = myBlock.CubeGrid.GridSystems.ConveyorSystem;

            int i = 0;

            foreach (var position in positionInfo)
            {
                var gridPosition = PositionToGridCoords(position.Position);

                MyConveyorLine line = conveyorSystem.GetDeserializingLine(gridPosition);
                if (line == null)
                {
                    line = new MyConveyorLine();
                    line.Init(gridPosition, gridPosition.GetConnectingPosition(), myBlock.CubeGrid, position.LineType, position.LineConductivity);
                    line.InitEndpoints(this, null);
                }
                else
                {
                    if (line.GetEndpointPosition(0).Equals(gridPosition))
                    {
                        line.SetEndpoint(0, this);
                    }
                    else if (line.GetEndpointPosition(1).Equals(gridPosition))
                    {
                        line.SetEndpoint(1, this);
                    }
                }
                m_conveyorLines[i] = line;
                i++;
            }

            myBlock.SlimBlock.ComponentStack.IsFunctionalChanged += UpdateLineFunctionality;
            myBlock.CubeGrid.GridSystems.ConveyorSystem.ResourceSink.IsPoweredChanged += UpdateLineFunctionality;

            m_pathfindingData = new MyPathfindingData(this);
            ProfilerShort.End();
        }
 protected MyNavigationPrimitive()
 {
     m_pathfindingData = new MyPathfindingData(this);
 }