private static void InitializeMulti(IMultiBlockParent parent, MultiBlockInfo info, byte rotation, BlockPosition position, KeyValuePair <BlockPosition, BlockSides>[] partPositions, Function <int, IMultiBlockPart[]> partsArrayConstructor, Function <KeyValuePair <BlockPosition, BlockSides>, IMultiBlockPart> partConstructor, out IMultiBlockPart[] parts) { BlockSides parentSides = BlockSides.None; parts = partsArrayConstructor(partPositions.Length - 1); int partsIndex = 0; foreach (KeyValuePair <BlockPosition, BlockSides> pair in partPositions) { if (pair.Key.Equals(position)) { parentSides = pair.Value; } else { parts[partsIndex++] = partConstructor(pair); } } foreach (IMultiBlockPart part in parts) { part.Initialize(parent); } parent.Initialize(parentSides, position, info, rotation, parts); }
public void Initialize(IMultiBlockParent parent) { Parent = (PlacedMultiBlockParent)parent; }
public void Initialize(IMultiBlockParent parent) { Parent = (LiveMultiBlockParent)parent; }