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(); }