private static void PrepBlocks(Random rand, MyIDModule owner, MyObjectBuilder_CubeGrid grid, GridComponents comps) { for (int i = grid.CubeBlocks.Count - 1; i >= 0; i--) { MyObjectBuilder_CubeBlock cubeBuilder = grid.CubeBlocks[i]; if (cubeBuilder.EntityId == 0) { if (!Utilities.RandomEntityId(rand, out cubeBuilder.EntityId)) { grid.CubeBlocks.RemoveAtFast(i); continue; } } cubeBuilder.SetupForProjector(); MyCubeBlockDefinition def = MyDefinitionManager.Static.GetCubeBlockDefinition(cubeBuilder); if (def == null) { grid.CubeBlocks.RemoveAtFast(i); continue; } if (comps != null) { comps.Include(def); } cubeBuilder.Owner = owner.Owner; cubeBuilder.BuiltBy = owner.Owner; cubeBuilder.ShareMode = owner.ShareMode; // Since the cross grid entity ids are invalid, remove references to them. if (cubeBuilder is MyObjectBuilder_AttachableTopBlockBase) { ((MyObjectBuilder_AttachableTopBlockBase)cubeBuilder).ParentEntityId = 0; } if (cubeBuilder is MyObjectBuilder_MechanicalConnectionBlock) { ((MyObjectBuilder_MechanicalConnectionBlock)cubeBuilder).TopBlockId = null; } if (cubeBuilder is MyObjectBuilder_MotorBase) { ((MyObjectBuilder_MotorBase)cubeBuilder).RotorEntityId = null; } if (cubeBuilder is MyObjectBuilder_FunctionalBlock) { ((MyObjectBuilder_FunctionalBlock)cubeBuilder).Enabled = true; } if (cubeBuilder is MyObjectBuilder_BatteryBlock) { MyBatteryBlockDefinition batDef = (MyBatteryBlockDefinition)def; ((MyObjectBuilder_BatteryBlock)cubeBuilder).CurrentStoredPower = batDef.InitialStoredPowerRatio * batDef.MaxStoredPower; } } }
private static bool PrepBlocks(ulong activator, MyIDModule owner, MyObjectBuilder_CubeGrid grid, GridComponents comps) { foreach (MyObjectBuilder_CubeBlock cubeBuilder in grid.CubeBlocks) { if (cubeBuilder.EntityId == 0) { if (!Constants.RandomEntityId(out cubeBuilder.EntityId)) { return(false); } } cubeBuilder.SetupForProjector(); MyCubeBlockDefinition def = MyDefinitionManager.Static.GetCubeBlockDefinition(cubeBuilder); if (def == null) { Constants.Notify(Constants.msgUnknownBlock, activator); return(false); } if (comps != null) { comps.Include(def); } cubeBuilder.Owner = owner.Owner; cubeBuilder.BuiltBy = owner.Owner; cubeBuilder.ShareMode = owner.ShareMode; // Since the cross grid entity ids are invalid, remove references to them. if (cubeBuilder is MyObjectBuilder_AttachableTopBlockBase) { ((MyObjectBuilder_AttachableTopBlockBase)cubeBuilder).ParentEntityId = 0; } if (cubeBuilder is MyObjectBuilder_MechanicalConnectionBlock) { ((MyObjectBuilder_MechanicalConnectionBlock)cubeBuilder).TopBlockId = null; } if (cubeBuilder is MyObjectBuilder_FunctionalBlock) { ((MyObjectBuilder_FunctionalBlock)cubeBuilder).Enabled = true; } if (cubeBuilder is MyObjectBuilder_BatteryBlock) { MyBatteryBlockDefinition batDef = (MyBatteryBlockDefinition)def; ((MyObjectBuilder_BatteryBlock)cubeBuilder).CurrentStoredPower = batDef.InitialStoredPowerRatio * batDef.MaxStoredPower; } } return(true); }