public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid) { base.Init(objectBuilder, cubeGrid); var ob = objectBuilder as MyObjectBuilder_CompoundCubeBlock; if (ob.Blocks != null) { if (ob.BlockIds != null) { Debug.Assert(ob.Blocks.Length == ob.BlockIds.Length); for (int i = 0; i < ob.Blocks.Length; ++i) { ushort id = ob.BlockIds[i]; if (m_blocks.ContainsKey(id)) { Debug.Fail("Block with the same id found"); continue; } var blockBuilder = ob.Blocks[i]; object objectBlock = MyCubeBlockFactory.CreateCubeBlock(blockBuilder); MySlimBlock cubeBlock = objectBlock as MySlimBlock; if (cubeBlock == null) { cubeBlock = new MySlimBlock(); } cubeBlock.Init(blockBuilder, cubeGrid, objectBlock as MyCubeBlock); cubeBlock.FatBlock.Hierarchy.Parent = Hierarchy; m_blocks.Add(id, cubeBlock); } RefreshNextId(); } else { for (int i = 0; i < ob.Blocks.Length; ++i) { var blockBuilder = ob.Blocks[i]; object objectBlock = MyCubeBlockFactory.CreateCubeBlock(blockBuilder); MySlimBlock cubeBlock = objectBlock as MySlimBlock; if (cubeBlock == null) { cubeBlock = new MySlimBlock(); } cubeBlock.Init(blockBuilder, cubeGrid, objectBlock as MyCubeBlock); cubeBlock.FatBlock.Hierarchy.Parent = Hierarchy; ushort id = CreateId(cubeBlock); m_blocks.Add(id, cubeBlock); } } } RefreshTemplates(); }
public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid) { base.Init(objectBuilder, cubeGrid); MyObjectBuilder_CompoundCubeBlock block = objectBuilder as MyObjectBuilder_CompoundCubeBlock; if (block.Blocks != null) { if (block.BlockIds == null) { for (int i = 0; i < block.Blocks.Length; i++) { MyObjectBuilder_CubeBlock builder = block.Blocks[i]; object obj3 = MyCubeBlockFactory.CreateCubeBlock(builder); MySlimBlock block5 = obj3 as MySlimBlock; if (block5 == null) { block5 = new MySlimBlock(); } block5.Init(builder, cubeGrid, obj3 as MyCubeBlock); block5.FatBlock.HookMultiplayer(); block5.FatBlock.Hierarchy.Parent = base.Hierarchy; ushort key = this.CreateId(block5); this.m_mapIdToBlock.Add(key, block5); this.m_blocks.Add(block5); } } else { int index = 0; while (true) { if (index >= block.Blocks.Length) { this.RefreshNextId(); break; } ushort key = block.BlockIds[index]; if (!this.m_mapIdToBlock.ContainsKey(key)) { MyObjectBuilder_CubeBlock builder = block.Blocks[index]; object obj2 = MyCubeBlockFactory.CreateCubeBlock(builder); MySlimBlock block3 = obj2 as MySlimBlock; if (block3 == null) { block3 = new MySlimBlock(); } block3.Init(builder, cubeGrid, obj2 as MyCubeBlock); if (block3.FatBlock != null) { block3.FatBlock.HookMultiplayer(); block3.FatBlock.Hierarchy.Parent = base.Hierarchy; this.m_mapIdToBlock.Add(key, block3); this.m_blocks.Add(block3); } } index++; } } } this.RefreshTemplates(); base.AddDebugRenderComponent(new MyDebugRenderComponentCompoundBlock(this)); }