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();
        }
Example #2
0
        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));
        }