private BlockDefinition AddStandardFields(MyCubeBlockDefinition myBlockDefinition,
                                           BlockDefinition blockDefinition)
 {
     AddBaseFields(myBlockDefinition, blockDefinition);
     blockDefinition.CubeSize            = myBlockDefinition.CubeSize.ToString();
     blockDefinition.BuildProgressModels =
         myBlockDefinition.BuildProgressModels.Select(GetBuildProgressModel).ToList();
     blockDefinition.Size   = myBlockDefinition.Size.ToPlain();
     blockDefinition.Public = myBlockDefinition.Public;
     blockDefinition.AvailableInSurvival = myBlockDefinition.AvailableInSurvival;
     blockDefinition.Enabled             = myBlockDefinition.Enabled;
     blockDefinition.Type        = myBlockDefinition.GetType().Name;
     blockDefinition.Mass        = myBlockDefinition.Mass;
     blockDefinition.MountPoints = myBlockDefinition.MountPoints.Select(mp => new MountPoint()
     {
         End                 = mp.End.ToPlainF(),
         Start               = mp.Start.ToPlainF(),
         Normal              = mp.Normal.ToPlain(),
         Default             = mp.Default,
         Enabled             = mp.Enabled,
         ExclusionMask       = mp.ExclusionMask,
         PropertiesMask      = mp.PropertiesMask,
         PressurizedWhenOpen = mp.PressurizedWhenOpen
     }).ToList();
     blockDefinition.Components = myBlockDefinition.Components.Select(GetComponent).ToList();
     return(blockDefinition);
 }
        public BlockDefinition CreateAndFill(MyCubeBlockDefinition sourceBlock)
        {
            var type  = sourceBlock.GetType().Name;
            var block = CreateBlockDefinition(type);

            AddStandardFields(sourceBlock, block);
            BlockDefinitionCustomFieldsMapper.AddCustomFields(sourceBlock, block);
            return(block);
        }
        private static InventoryEditorModel ParseInventory(MyObjectBuilder_Inventory inventory, MyCubeBlockDefinition definition = null)
        {
            if (inventory == null)
            {
                return(null);
            }
            float volumeMultiplier = 1f; // Unsure if there should be a default of 1 if there isn't a InventorySize defined.

            if (definition == null)
            {
                volumeMultiplier = 0.4f;
            }
            else
            {
                var definitionType          = definition.GetType();
                var invSizeField            = definitionType.GetField("InventorySize");
                var inventoryMaxVolumeField = definitionType.GetField("InventoryMaxVolume");
                if (invSizeField != null)
                {
                    var invSize = (Vector3)invSizeField.GetValue(definition);
                    volumeMultiplier = invSize.X * invSize.Y * invSize.Z;
                }
                if (inventoryMaxVolumeField != null)
                {
                    var maxSize = (float)inventoryMaxVolumeField.GetValue(definition);
                    volumeMultiplier = MathHelper.Min(volumeMultiplier, maxSize);
                }
            }

            var settings = SpaceEngineersCore.WorldResource.Checkpoint.Settings;

            return(new InventoryEditorModel(inventory, volumeMultiplier * 1000 * settings.InventorySizeMultiplier, null)
            {
                Name = inventory.InventoryFlags.ToString(), IsValid = true
            });
        }
Ejemplo n.º 4
0
 private Dictionary <Type, Type> GetParentsAsDict(MyCubeBlockDefinition id)
 {
     return(GetParentsAsDict(GetParentsByType(id.GetType())));
 }