public override void GetGridSpawnMaterials(MyObjectBuilder_CubeGrid grid) { ClearRequiredMaterials(); foreach (var block in grid.CubeBlocks) { MyComponentStack.GetMountedComponents(m_materialList, block); if (block.ConstructionStockpile != null) { foreach (var item in block.ConstructionStockpile.Items) { var itemId = item.PhysicalContent.GetId(); m_materialList.AddMaterial(itemId, item.Amount, item.Amount, addToDisplayList: false); } } } }
public void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid, MyCubeBlock fatBlock) { ProfilerShort.Begin("SlimBlock.Init(objectBuilder, ...)"); Debug.Assert(cubeGrid != null); FatBlock = fatBlock; m_soundEmitter.Entity = FatBlock; if (objectBuilder is MyObjectBuilder_CompoundCubeBlock) BlockDefinition = MyCompoundCubeBlock.GetCompoundCubeBlockDefinition(); else BlockDefinition = MyDefinitionManager.Static.GetCubeBlockDefinition(objectBuilder.GetId()); m_componentStack = new MyComponentStack(BlockDefinition, objectBuilder.IntegrityPercent, objectBuilder.BuildPercent); if (MyCubeGridDefinitions.GetCubeRotationOptions(BlockDefinition) == MyRotationOptionsEnum.None) { objectBuilder.BlockOrientation = MyBlockOrientation.Identity; } DeformationRatio = BlockDefinition.DeformationRatio; Min = objectBuilder.Min; Orientation = objectBuilder.BlockOrientation; if (!Orientation.IsValid) Orientation = MyBlockOrientation.Identity; Debug.Assert(Orientation.IsValid, "Orientation of block is not valid."); CubeGrid = cubeGrid; ColorMaskHSV = objectBuilder.ColorMaskHSV; if (BlockDefinition.CubeDefinition != null) { //Ensure we have always only one distinct orientation use Orientation = MyCubeGridDefinitions.GetTopologyUniqueOrientation(BlockDefinition.CubeDefinition.CubeTopology, Orientation); } ComputeMax(BlockDefinition, Orientation, ref Min, out Max); Matrix localMatrix; Orientation.GetMatrix(out localMatrix); Position = ComputePositionInGrid(ref localMatrix); UpdateShowParts(); if (FatBlock == null) { bool isRenderedAsModel = !String.IsNullOrEmpty(BlockDefinition.Model); bool showConstructionModel = BlockDefinition.BlockTopology == MyBlockTopology.Cube && !ShowParts; if (isRenderedAsModel || showConstructionModel) { FatBlock = new MyCubeBlock(); m_soundEmitter.Entity = FatBlock; } } if (FatBlock != null) { ProfilerShort.Begin("FatBlock.Init(objectBuilder, ...)"); FatBlock.SlimBlock = this; FatBlock.Init(objectBuilder, cubeGrid); ProfilerShort.End(); } if (objectBuilder.ConstructionStockpile != null) { EnsureConstructionStockpileExists(); m_stockpile.Init(objectBuilder.ConstructionStockpile); } else if (objectBuilder.ConstructionInventory != null) // Backwards compatibility { EnsureConstructionStockpileExists(); m_stockpile.Init(objectBuilder.ConstructionInventory); } if (FatBlock == null || FatBlock.GetType() == typeof(MyCubeBlock)) m_objectBuilder = new MyObjectBuilder_CubeBlock(); if (MyFakes.SHOW_DAMAGE_EFFECTS && FatBlock != null && BlockDefinition.RationEnoughForDamageEffect(Integrity / MaxIntegrity)) {//start effect if (CurrentDamage>0)//fix for weird simple blocks having FatBlock - old save? { FatBlock.SetDamageEffect(true); } } ProfilerShort.End(); }
private static void AddBlockComponent(MyHudBlockInfo hudInfo, MyComponentStack.GroupInfo groupInfo, MyInventoryBase availableInventory) { var componentInfo = new MyHudBlockInfo.ComponentInfo(); componentInfo.DefinitionId = groupInfo.Component.Id; componentInfo.ComponentName = groupInfo.Component.DisplayNameText; componentInfo.Icons = groupInfo.Component.Icons; componentInfo.TotalCount = groupInfo.TotalCount; componentInfo.MountedCount = groupInfo.MountedCount; if (availableInventory != null) componentInfo.AvailableAmount = (int)MyCubeBuilder.BuildComponent.GetItemAmountCombined(availableInventory, groupInfo.Component.Id); hudInfo.Components.Add(componentInfo); }