public static void LoadDefinition(this MyHudBlockInfo blockInfo, MyCubeBlockDefinition definition, bool merge = true) { InitBlockInfo(blockInfo, definition); if (definition.MultiBlock != null) { MyDefinitionId defId = new MyDefinitionId(typeof(MyObjectBuilder_MultiBlockDefinition), definition.MultiBlock); MyMultiBlockDefinition multiBlockDef = MyDefinitionManager.Static.TryGetMultiBlockDefinition(defId); if (multiBlockDef != null) { foreach (var blockPart in multiBlockDef.BlockDefinitions) { MyCubeBlockDefinition cubeBlockDef = null; MyDefinitionManager.Static.TryGetDefinition(blockPart.Id, out cubeBlockDef); if (cubeBlockDef != null) { AddComponentsForBlock(blockInfo, cubeBlockDef); } } } } else { AddComponentsForBlock(blockInfo, definition); } if (merge) { MergeSameComponents(blockInfo); } }
public void SetGridFromBuilder(MyMultiBlockDefinition multiBlockDefinition, MyObjectBuilder_CubeGrid grid, Vector3 dragPointDelta, float dragVectorLength) { this.ChangeClipboardPreview(false, base.m_previewGrids, base.m_copiedGrids); this.m_multiBlockDefinition = multiBlockDefinition; base.SetGridFromBuilder(grid, dragPointDelta, dragVectorLength); this.ChangeClipboardPreview(true, base.m_previewGrids, base.m_copiedGrids); }
public void SetGridFromBuilder(MyMultiBlockDefinition multiBlockDefinition, MyObjectBuilder_CubeGrid grid, Vector3 dragPointDelta, float dragVectorLength) { Debug.Assert(multiBlockDefinition != null); m_multiBlockDefinition = multiBlockDefinition; SetGridFromBuilder(grid, dragPointDelta, dragVectorLength); }
public static void TakeMaterialsFromBuilder(List <MyObjectBuilder_CubeGrid> blocksToBuild, MyEntity builder) { Debug.Assert(blocksToBuild.Count == 1); if (blocksToBuild.Count == 0) { return; } // Search for multiblock definition. var firstBlock = blocksToBuild[0].CubeBlocks.FirstOrDefault(); Debug.Assert(firstBlock != null); if (firstBlock == null) { return; } MyDefinitionId multiBlockDefId; var compound = firstBlock as MyObjectBuilder_CompoundCubeBlock; if (compound != null) { Debug.Assert(compound.Blocks != null && compound.Blocks.Length > 0 && compound.Blocks[0].MultiBlockDefinition != null); if (compound.Blocks == null || compound.Blocks.Length == 0 || compound.Blocks[0].MultiBlockDefinition == null) { return; } multiBlockDefId = compound.Blocks[0].MultiBlockDefinition.Value; } else { Debug.Assert(firstBlock.MultiBlockDefinition != null); if (firstBlock.MultiBlockDefinition == null) { return; } multiBlockDefId = firstBlock.MultiBlockDefinition.Value; } MyMultiBlockDefinition multiBlockDefinition = MyDefinitionManager.Static.TryGetMultiBlockDefinition(multiBlockDefId); Debug.Assert(multiBlockDefinition != null); if (multiBlockDefinition == null) { return; } MyCubeBuilder.BuildComponent.GetMultiBlockPlacementMaterials(multiBlockDefinition); MyCubeBuilder.BuildComponent.AfterSuccessfulBuild(builder, instantBuild: false); }
public static void TakeMaterialsFromBuilder(List <MyObjectBuilder_CubeGrid> blocksToBuild, VRage.Game.Entity.MyEntity builder) { if (blocksToBuild.Count != 0) { MyObjectBuilder_CubeBlock block = blocksToBuild[0].CubeBlocks.FirstOrDefault <MyObjectBuilder_CubeBlock>(); if (block != null) { MyDefinitionId id; MyObjectBuilder_CompoundCubeBlock block2 = block as MyObjectBuilder_CompoundCubeBlock; if (block2 == null) { if (block.MultiBlockDefinition == null) { return; } id = block.MultiBlockDefinition.Value; } else if (block2.Blocks == null) { return; } else if ((block2.Blocks.Length != 0) && (block2.Blocks[0].MultiBlockDefinition != null)) { id = block2.Blocks[0].MultiBlockDefinition.Value; } else { return; } MyMultiBlockDefinition multiBlockDefinition = MyDefinitionManager.Static.TryGetMultiBlockDefinition(id); if (multiBlockDefinition != null) { MyCubeBuilder.BuildComponent.GetMultiBlockPlacementMaterials(multiBlockDefinition); MyCubeBuilder.BuildComponent.AfterSuccessfulBuild(builder, false); } } } }
public override void GetMultiBlockPlacementMaterials(MyMultiBlockDefinition multiBlockDefinition) { }
public override void Deactivate(bool afterPaste = false) { this.m_multiBlockDefinition = null; base.Deactivate(afterPaste); }
public abstract void GetMultiBlockPlacementMaterials(MyMultiBlockDefinition multiBlockDefinition);
public override void Deactivate() { m_multiBlockDefinition = null; base.Deactivate(); }