public override void AfterPostprocess(MyDefinitionSet set, Dictionary <MyStringHash, MyDefinitionBase> definitions)
 {
     foreach (var def in definitions.Values.Cast <MyPhysicalModelDefinition>())
     {
         def.PhysicalMaterial = MyDestructionData.GetPhysicalMaterial(def, def.m_material);
     }
 }
 public override void AfterPostprocess(MyDefinitionSet set, Dictionary<MyStringHash, MyDefinitionBase> definitions)
 {
     foreach (var def in definitions.Values.Cast<MyPhysicalModelDefinition>())
     {
         def.PhysicalMaterial = MyDestructionData.GetPhysicalMaterial(def, def.m_material);
     }
 }
 public override void AfterPostprocess(MyDefinitionSet set, Dictionary <MyStringHash, MyDefinitionBase> definitions)
 {
     foreach (var def in definitions)
     {
         ((MyProceduralEnvironmentDefinition)def.Value).Prepare();
     }
 }
Example #4
0
 public override void AfterPostprocess(MyDefinitionSet set, Dictionary <MyStringHash, MyDefinitionBase> definitions)
 {
     if (!set.ContainsDefinition(Default))
     {
         set.GetDefinitionsOfType <MyGameDefinition>().First().SetDefault();
     }
 }
Example #5
0
        public static void LoadObjectBuilders(MyDefinitionSet set)
        {
            var definitionFactory  = MyDefinitionFactory.Get();
            var definitionHandlers = definitionFactory.DefinitionHandlers;
            var currentObset       = m_currentObset;

            for (var index1 = 0; index1 < definitionHandlers.Count; ++index1)
            {
                var handler           = definitionHandlers[index1];
                var objectBuilderType = ((MyDefinitionTypeAttribute)m_handlerAttributeField.GetValue(handler)).ObjectBuilderType;
                if (handler.HasBeforeLoad)
                {
                    handler.BeforeLoad(set);
                }
                MyConcurrentSortedDictionary <IApplicationPackage, MyConcurrentList <MyObjectBuilder_DefinitionBase> > modBuilders;
                if (m_modObjectBuilders.TryGetValue(objectBuilderType, out modBuilders))
                {
                    MergeBuilders(handler, modBuilders, m_currentObset);
                    ResolveInheritance(handler, m_currentObset);
                    for (var index2 = 0; index2 < m_currentObset.Count; ++index2)
                    {
                        var builder = currentObset[index2];
                        if (!builder.Abstract)
                        {
                            Loaded.AddOrReplaceDefinition(builder);
                        }
                    }

                    m_currentObset.Clear();
                }
            }
        }
Example #6
0
            // Called after all definitions are merged to one set
            // Anything that may refere to other definitions from game or that may be modified by mods should be postprocessed here.
            public override void AfterPostprocess(MyDefinitionSet set, Dictionary <MyStringHash, MyDefinitionBase> definitions)
            {
                List <int> toRemove = new List <int>();

                foreach (var def in definitions.Values)
                {
                    var pgdef = (MyPlanetGeneratorDefinition)def;

                    // Legacy planet with automatically converted definition
                    if (!pgdef.EnvironmentId.HasValue)
                    {
                        pgdef.EnvironmentDefinition = MyProceduralEnvironmentDefinition.FromLegacyPlanet(pgdef.m_pgob, def.Context);
                        set.AddOrRelaceDefinition(pgdef.EnvironmentDefinition);

                        pgdef.m_pgob = null;
                    }
                    else
                    {
                        pgdef.EnvironmentDefinition = MyDefinitionManager.Static.GetDefinition <MyWorldEnvironmentDefinition>(pgdef.EnvironmentId.Value);
                    }

                    if (pgdef.EnvironmentDefinition == null)
                    {
                        continue;
                    }

                    pgdef.EnvironmentSectorType = pgdef.EnvironmentDefinition.SectorType;
                    Debug.Assert(typeof(MyEnvironmentSector).IsAssignableFrom(pgdef.EnvironmentSectorType));

                    foreach (var bmap in pgdef.MaterialEnvironmentMappings.Values)
                    {
                        foreach (var mmap in bmap.Values)
                        {
                            foreach (var env in mmap)
                            {
                                for (int i = 0; i < env.Items.Length; ++i)
                                {
                                    if (env.Items[i].IsEnvironemntItem)
                                    {
                                        MyEnvironmentItemsDefinition eidef;
                                        if (!MyDefinitionManager.Static.TryGetDefinition(env.Items[i].Definition, out eidef))
                                        {
                                            MyLog.Default.WriteLine(string.Format("Could not find environment item definition for {0}.", env.Items[i].Definition));
                                            toRemove.Add(i);
                                        }
                                    }
                                }

                                if (toRemove.Count > 0)
                                {
                                    env.Items = env.Items.RemoveIndices(toRemove);
                                    env.ComputeDistribution();
                                    toRemove.Clear();
                                }
                            }
                        }
                    }
                }
            }
Example #7
0
            public override void AfterPostprocess(MyDefinitionSet set, Dictionary <MyStringHash, MyDefinitionBase> definitions)
            {
                List <int> indices = new List <int>();

                foreach (MyDefinitionBase base2 in definitions.Values)
                {
                    MyPlanetGeneratorDefinition definition = (MyPlanetGeneratorDefinition)base2;
                    if (definition.EnvironmentId != null)
                    {
                        definition.EnvironmentDefinition = MyDefinitionManager.Static.GetDefinition <MyWorldEnvironmentDefinition>(definition.EnvironmentId.Value);
                    }
                    else
                    {
                        definition.EnvironmentDefinition = MyProceduralEnvironmentDefinition.FromLegacyPlanet(definition.m_pgob, base2.Context);
                        set.AddOrRelaceDefinition(definition.EnvironmentDefinition);
                        definition.m_pgob = null;
                    }
                    if (definition.EnvironmentDefinition != null)
                    {
                        definition.EnvironmentSectorType = definition.EnvironmentDefinition.SectorType;
                        using (Dictionary <int, Dictionary <string, List <MyPlanetEnvironmentMapping> > > .ValueCollection.Enumerator enumerator2 = definition.MaterialEnvironmentMappings.Values.GetEnumerator())
                        {
                            while (enumerator2.MoveNext())
                            {
                                using (Dictionary <string, List <MyPlanetEnvironmentMapping> > .ValueCollection.Enumerator enumerator3 = enumerator2.Current.Values.GetEnumerator())
                                {
                                    while (enumerator3.MoveNext())
                                    {
                                        foreach (MyPlanetEnvironmentMapping mapping in enumerator3.Current)
                                        {
                                            int index = 0;
                                            while (true)
                                            {
                                                MyEnvironmentItemsDefinition definition2;
                                                if (index >= mapping.Items.Length)
                                                {
                                                    if (indices.Count > 0)
                                                    {
                                                        mapping.Items = mapping.Items.RemoveIndices <MyMaterialEnvironmentItem>(indices);
                                                        mapping.ComputeDistribution();
                                                        indices.Clear();
                                                    }
                                                    break;
                                                }
                                                if (mapping.Items[index].IsEnvironemntItem && !MyDefinitionManager.Static.TryGetDefinition <MyEnvironmentItemsDefinition>(mapping.Items[index].Definition, out definition2))
                                                {
                                                    MyLog.Default.WriteLine($"Could not find environment item definition for {mapping.Items[index].Definition}.");
                                                    indices.Add(index);
                                                }
                                                index++;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            public override void AfterPostprocess(MyDefinitionSet set, Dictionary<MyStringHash, MyDefinitionBase> definitions)
            {

                if (!set.ContainsDefinition(Default))
                {
                    set.GetDefinitionsOfType<MyGameDefinition>().First().SetDefault();
                }
            }
Example #9
0
 public override unsafe void AfterPostprocess(MyDefinitionSet set, Dictionary <MyStringHash, MyDefinitionBase> definitions)
 {
     foreach (MyVoxelMaterialModifierDefinition definition in definitions.Values)
     {
         definition.Options = new MyDiscreteSampler <VoxelMapChange>(definition.m_ob.Options.Select <MyVoxelMapModifierOption, VoxelMapChange>(delegate(MyVoxelMapModifierOption x) {
             VoxelMapChange *changePtr1;
             VoxelMapChange change = new VoxelMapChange();
             changePtr1->Changes   = (x.Changes == null) ? null : x.Changes.ToDictionary <MyVoxelMapModifierChange, byte, byte>(y => MyDefinitionManager.Static.GetVoxelMaterialDefinition(y.From).Index, y => MyDefinitionManager.Static.GetVoxelMaterialDefinition(y.To).Index);
             changePtr1            = (VoxelMapChange *)ref change;
             return(change);
         }), from x in definition.m_ob.Options select x.Chance);
         definition.m_ob = null;
     }
 }
Example #10
0
            public override void AfterPostprocess(MyDefinitionSet set, Dictionary <MyStringHash, MyDefinitionBase> definitions)
            {
                foreach (var def in definitions.Values)
                {
                    var vmdef = (MyVoxelMaterialModifierDefinition)def;

                    vmdef.Options = new MyDiscreteSampler <VoxelMapChange>(vmdef.m_ob.Options.Select(x => new VoxelMapChange
                    {
                        Changes = x.Changes == null ? null : x.Changes.ToDictionary(
                            y => MyDefinitionManager.Static.GetVoxelMaterialDefinition(y.From).Index,
                            y => MyDefinitionManager.Static.GetVoxelMaterialDefinition(y.To).Index)
                    }), vmdef.m_ob.Options.Select(x => x.Chance));

                    Debug.Assert(vmdef.Options.Initialized);

                    vmdef.m_ob = null;
                }
            }
            public override void AfterPostprocess(MyDefinitionSet set, Dictionary<MyStringHash, MyDefinitionBase> definitions)
            {
                foreach (var def in definitions.Values)
                {
                    var vmdef = (MyVoxelMaterialModifierDefinition)def;

                    vmdef.Options = new MyDiscreteSampler<VoxelMapChange>(vmdef.m_ob.Options.Select(x => new VoxelMapChange
                    {
                        Changes = x.Changes == null ? null : x.Changes.ToDictionary(
                            y => MyDefinitionManager.Static.GetVoxelMaterialDefinition(y.From).Index,
                            y => MyDefinitionManager.Static.GetVoxelMaterialDefinition(y.To).Index)
                    }), vmdef.m_ob.Options.Select(x => x.Chance));

                    Debug.Assert(vmdef.Options.Initialized);

                    vmdef.m_ob = null;
                }
            }
        // Called after all definitions are merged to one set
        // Anything that may refere to other definitions from game or that may be modified by mods should be postprocessed here.
        public override void AfterPostprocess(MyDefinitionSet set, Dictionary <MyStringHash, MyDefinitionBase> definitions)
        {
            List <int> toRemove = new List <int>();

            foreach (var def in definitions.Values)
            {
                var pgdef = (MyPlanetGeneratorDefinition)def;
                foreach (var bmap in pgdef.MaterialEnvironmentMappings.Values)
                {
                    foreach (var mmap in bmap.Values)
                    {
                        foreach (var env in mmap)
                        {
                            for (int i = 0; i < env.Items.Length; ++i)
                            {
                                if (env.Items[i].IsEnvironemntItem)
                                {
                                    MyEnvironmentItemsDefinition eidef;
                                    if (!MyDefinitionManager.Static.TryGetDefinition(env.Items[i].Definition, out eidef))
                                    {
                                        MyLog.Default.WriteLine(string.Format("Could not find environment item definition for {0}.", env.Items[i].Definition));
                                        toRemove.Add(i);
                                    }
                                }
                            }

                            if (toRemove.Count > 0)
                            {
                                env.Items = env.Items.RemoveIndices(toRemove);
                                env.ComputeDistribution();
                                toRemove.Clear();
                            }
                        }
                    }
                }
            }
        }
 // Called after all definitions are loaded and postprocessed
 // No definition may be discarded at this phase.
 public abstract void AfterPostprocess(MyDefinitionSet set, Dictionary <MyStringHash, MyDefinitionBase> definitions);
        // Called after all definitions are merged to one set
        // Anything that may refere to other definitions from game or that may be modified by mods should be postprocessed here.
        public override void AfterPostprocess(MyDefinitionSet set, Dictionary<MyStringHash, MyDefinitionBase> definitions)
        {
            List<int> toRemove = new List<int>();

            foreach (var def in definitions.Values)
            {
                var pgdef = (MyPlanetGeneratorDefinition) def;
                foreach (var bmap in pgdef.MaterialEnvironmentMappings.Values)
                {
                    foreach (var mmap in bmap.Values)
                    {
                        foreach (var env in mmap)
                        {
                            for (int i = 0; i < env.Items.Length; ++i)
                            {
                                if (env.Items[i].IsEnvironemntItem)
                                {
                                    MyEnvironmentItemsDefinition eidef;
                                    if (!MyDefinitionManager.Static.TryGetDefinition(env.Items[i].Definition, out eidef))
                                    {
                                        MyLog.Default.WriteLine(string.Format("Could not find environment item definition for {0}.", env.Items[i].Definition));
                                        toRemove.Add(i);
                                    }
                                }
                            }

                            if (toRemove.Count > 0)
                            {
                                env.Items = env.Items.RemoveIndices(toRemove);
                                env.ComputeDistribution();
                                toRemove.Clear();
                            }
                        }
                    }
                }
            }
        }
 public override void AfterPostprocess(MyDefinitionSet set, Dictionary <MyStringHash, MyDefinitionBase> definitions)
 {
 }
 public override void AfterPostprocess(MyDefinitionSet set, Dictionary<MyStringHash, MyDefinitionBase> definitions)
 {
 }
            // Called after all definitions are merged to one set
            // Anything that may refere to other definitions from game or that may be modified by mods should be postprocessed here.
            public override void AfterPostprocess(MyDefinitionSet set, Dictionary<MyStringHash, MyDefinitionBase> definitions)
            {
                List<int> toRemove = new List<int>();

                foreach (var def in definitions.Values)
                {
                    var pgdef = (MyPlanetGeneratorDefinition)def;

                    // Legacy planet with automatically converted definition
                    if (!pgdef.EnvironmentId.HasValue)
                    {
                        pgdef.EnvironmentDefinition = MyProceduralEnvironmentDefinition.FromLegacyPlanet(pgdef.m_pgob, def.Context);
                        set.AddOrRelaceDefinition(pgdef.EnvironmentDefinition);

                        pgdef.m_pgob = null;
                    }
                    else
                    {
                        pgdef.EnvironmentDefinition = MyDefinitionManager.Static.GetDefinition<MyWorldEnvironmentDefinition>(pgdef.EnvironmentId.Value);
                    }

                    if (pgdef.EnvironmentDefinition == null)
                        continue;

                    pgdef.EnvironmentSectorType = pgdef.EnvironmentDefinition.SectorType;
                    Debug.Assert(typeof(MyEnvironmentSector).IsAssignableFrom(pgdef.EnvironmentSectorType));

                    foreach (var bmap in pgdef.MaterialEnvironmentMappings.Values)
                    {
                        foreach (var mmap in bmap.Values)
                        {
                            foreach (var env in mmap)
                            {
                                for (int i = 0; i < env.Items.Length; ++i)
                                {
                                    if (env.Items[i].IsEnvironemntItem)
                                    {
                                        MyEnvironmentItemsDefinition eidef;
                                        if (!MyDefinitionManager.Static.TryGetDefinition(env.Items[i].Definition, out eidef))
                                        {
                                            MyLog.Default.WriteLine(string.Format("Could not find environment item definition for {0}.", env.Items[i].Definition));
                                            toRemove.Add(i);
                                        }
                                    }
                                }

                                if (toRemove.Count > 0)
                                {
                                    env.Items = env.Items.RemoveIndices(toRemove);
                                    env.ComputeDistribution();
                                    toRemove.Clear();
                                }
                            }
                        }
                    }
                }
            }