コード例 #1
0
        /// <summary>
        /// Register an assembly and it's types metadata.
        /// </summary>
        /// <param name="assembly">Assembly to register.</param>
        public void RegisterAssembly(Assembly assembly)
        {
            if (assembly == null)
            {
                return;
            }

#if !XB1 // XB1_ALLINONEASSEMBLY
            m_assemblies.Add(assembly);
#endif // !XB1

            MyObjectBuilderSerializer.RegisterFromAssembly(assembly);
            MyObjectBuilderType.RegisterFromAssembly(assembly, true);
            MyXmlSerializerManager.RegisterFromAssembly(assembly);
            MyDefinitionManagerBase.RegisterTypesFromAssembly(assembly);
        }
コード例 #2
0
        // generate object builder
        public override MyObjectBuilder_DefinitionBase GetObjectBuilder()
        {
            var builder = MyDefinitionManagerBase.GetObjectFactory().CreateObjectBuilder <MyObjectBuilder_AnimationControllerDefinition>(this);

            builder.Id                  = Id;
            builder.Description         = (DescriptionEnum.HasValue) ? DescriptionEnum.Value.ToString() : DescriptionString;
            builder.DisplayName         = (DisplayNameEnum.HasValue) ? DisplayNameEnum.Value.ToString() : DisplayNameString;
            builder.Icons               = Icons;
            builder.Public              = Public;
            builder.Enabled             = Enabled;
            builder.AvailableInSurvival = AvailableInSurvival;

            builder.StateMachines  = StateMachines.ToArray();
            builder.Layers         = Layers.ToArray();
            builder.FootIkChains   = FootIkChains.ToArray();
            builder.IkIgnoredBones = IkIgnoredBones.ToArray();

            return(builder);
        }
コード例 #3
0
        // receiving messages
        private void LiveDebugging_ReceivedMessageHandler(MyExternalDebugStructures.CommonMsgHeader messageHeader, IntPtr messageData)
        {
            MyExternalDebugStructures.ACReloadInGameMsg msgReload;
            if (MyExternalDebugStructures.ReadMessageFromPtr(ref messageHeader, messageData, out msgReload))
            {
                try
                {
                    string acContentPath = msgReload.ACContentAddress;
                    string acAddress     = msgReload.ACAddress;
                    string acName        = msgReload.ACName;

                    MyObjectBuilder_Definitions allDefinitions; // = null;
                    // load animation controller definition from SBC file
                    if (MyObjectBuilderSerializer.DeserializeXML(acAddress, out allDefinitions) &&
                        allDefinitions.Definitions != null &&
                        allDefinitions.Definitions.Length > 0)
                    {
                        var          firstDef = allDefinitions.Definitions[0];
                        MyModContext context  = new MyModContext();
                        context.Init("AnimationControllerDefinition", acAddress, acContentPath);
                        MyAnimationControllerDefinition animationControllerDefinition = new MyAnimationControllerDefinition();
                        animationControllerDefinition.Init(firstDef, context);
                        MyStringHash animSubtypeNameHash = MyStringHash.GetOrCompute(acName);

                        // post process and update in def. manager
                        MyAnimationControllerDefinition originalAnimationControllerDefinition =
                            MyDefinitionManagerBase.Static.GetDefinition <MyAnimationControllerDefinition>(
                                animSubtypeNameHash);

                        var postprocessor = MyDefinitionManagerBase.GetPostProcessor(typeof(MyObjectBuilder_AnimationControllerDefinition));
                        if (postprocessor != null)
                        {
                            MyDefinitionPostprocessor.Bundle originalBundle = new MyDefinitionPostprocessor.Bundle
                            {
                                Context     = MyModContext.BaseGame,
                                Definitions = new Dictionary <MyStringHash, MyDefinitionBase>
                                {
                                    { animSubtypeNameHash, originalAnimationControllerDefinition }
                                },
                                Set = new MyDefinitionSet()
                            };
                            originalBundle.Set.AddDefinition(originalAnimationControllerDefinition);

                            MyDefinitionPostprocessor.Bundle overridingBundle = new MyDefinitionPostprocessor.Bundle
                            {
                                Context     = context,
                                Definitions = new Dictionary <MyStringHash, MyDefinitionBase>
                                {
                                    { animSubtypeNameHash, animationControllerDefinition }
                                },
                                Set = new MyDefinitionSet()
                            };
                            overridingBundle.Set.AddDefinition(animationControllerDefinition);

                            // postprocess -> override existing definition in memory
                            postprocessor.AfterLoaded(ref overridingBundle);
                            postprocessor.OverrideBy(ref originalBundle, ref overridingBundle);
                        }

                        // swap animation controller for each entity
                        foreach (var component in m_skinnedEntityComponents)
                        {
                            if (component != null && component.SourceId.SubtypeName == acName)
                            {
                                component.Clear();
                                component.InitFromDefinition(originalAnimationControllerDefinition, forceReloadMwm: true); // reload from original def that was modified by postprocessor
                                if (component.ReloadBonesNeeded != null)
                                {
                                    component.ReloadBonesNeeded();
                                }
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    MyLog.Default.WriteLine(e);
                }
            }
        }
コード例 #4
0
 public static void RegisterFromAssembly(Assembly assembly)
 {
     MyObjectBuilderSerializer.RegisterFromAssembly(assembly);
     MyObjectBuilderType.RegisterFromAssembly(assembly);
     MyDefinitionManagerBase.RegisterTypesFromAssembly(assembly);
 }
コード例 #5
0
ファイル: AwwScrap2Core.cs プロジェクト: Thraxus/AwwScrap2
        private void SetupTestItem2()
        {
            // 1a) Physical Item Ob
            // 1b) Physical Item Def?
            // 1c) TODO: Add this... somewhere...
            // 2) Blueprint (add 1 to 2)
            // 3a) Blueprint Class OB
            // 3b) Blueprint Class Def
            // 3a) Add 3a to 3b
            // 4a) Add 3b to Refineries
            // 4a) Add 3b to Skits [if applicable]

            // 1) Physical Item

            //ReportOreDefinitions();

            MyObjectBuilder_PhysicalItemDefinition newPhysDefOb = new MyObjectBuilder_PhysicalItemDefinition
            {
                Id = new SerializableDefinitionId
                {
                    TypeId    = typeof(MyObjectBuilder_Ore),
                    SubtypeId = "BulletproofGlassScrap2"
                },
                AvailableInSurvival = true,
                CanPlayerOrder      = false,
                CanSpawnFromScreen  = true,
                Enabled             = true,
                Public           = true,
                DisplayName      = "Bulletproof Glass Scrap 2",
                Icons            = new[] { Constants.IconLocation + Constants.BulletproofGlassIcon },
                Size             = new Vector3(0.2, 0.2, 0.1),
                Mass             = 1,
                Volume           = 0.254f,
                Model            = Constants.KnownScrapModelLocation + Constants.Scrap2,
                PhysicalMaterial = "Metal"
            };

            var baseDef = MyDefinitionManagerBase.GetObjectFactory().CreateInstance(newPhysDefOb.TypeId);

            baseDef.Context = new MyModContext();
            baseDef.Context.Init((MyModContext)ModContext);
            baseDef.Init(newPhysDefOb, (MyModContext)ModContext);
            baseDef.AvailableInSurvival = true;
            baseDef.Public = true;

            WriteToLog("SetupTestItem2", $"{MyDefinitionManager.Static.Definitions.AddOrRelaceDefinition(baseDef)}", LogType.General);
            WriteToLog("SetupTestItem2", $"{MyDefinitionManager.Static.Definitions.AddOrRelaceDefinition(baseDef)}", LogType.General);
            WriteToLog("SetupTestItem2", $"{(MyDefinitionManager.Static.TryGetPhysicalItemDefinition(baseDef.Id)).Id}", LogType.General);
            WriteToLog("SetupTestItem2", $"{(MyDefinitionManager.Static.TryGetPhysicalItemDefinition(baseDef.Id)).IsOre}", LogType.General);

            MyPhysicalItemDefinition siliconOreDef = MyDefinitionManager.Static.GetPhysicalItemDefinition(new MyDefinitionId(typeof(MyObjectBuilder_Ore), "Silicon"));

            ReportCustomDefinition((MyPhysicalItemDefinition)baseDef);
            ReportCustomDefinition(siliconOreDef);


            //ReportOreDefinitions();
            //ReportDefinitions();

            // 1b) Physical Item Def -- May not be needed...
            //MyPhysicalItemDefinition newPhysItemDef = new MyPhysicalItemDefinition
            //{
            //	Context = (MyModContext) ModContext,
            //	Id = newPhysDefOb.Id,
            //	Public = true
            //};

            // 0) OB
            //MyObjectBuilder_PhysicalItemDefinition defOb = new MyObjectBuilder_PhysicalItemDefinition()
            //{
            //	Id = new.Id
            //};



            //MyObjectBuilder_LCDTextureDefinition lcdDef = new MyObjectBuilder_LCDTextureDefinition
            //{
            //	Id = baseDef.Id
            //};

            //MyDefinitionManager.Static.Definitions.Definitions[typeof(MyObjectBuilder_LCDTextureDefinition)].Add(lcdDef.SubtypeId, baseDef);

            //MyDefinitionManager.Static.GetLoadingSet().Definitions
            //WriteToLog("SetupTestItem2", $"{MyDefinitionManager.Static.GetLoadingSet().Definitions.Count}",LogType.General);
            //MyDefinitionManager.Static.Definitions.AddDefinition(baseDef);

            //MyDefinitionPostprocessor.Bundle bundle = default(MyDefinitionPostprocessor.Bundle);
            //bundle.Context = (MyModContext)ModContext;
            //bundle.Set = new MyDefinitionSet();
            //MyDefinitionPostprocessor.Bundle definitions = bundle;
            //bundle.Definitions.Add(baseDef.Id.SubtypeId, baseDef);



            //MyDefinitionManagerBase.GetPostProcessor(baseDef.GetObjectBuilder().TypeId). .AfterLoaded(ref definitions);
            //foreach (MyDefinitionPostprocessor postProcessor in MyDefinitionManagerBase.GetPostProcessor(baseDef.GetObjectBuilder().TypeId))
            //{
            //if (definitionSet.Definitions.TryGetValue(myDefinitionPostprocessor.DefinitionType, out definitions.Definitions))
            //{
            //postProcessor.AfterLoaded(ref definitions);
            //}
            //}


            //MyDefinitionManager.Static.Definitions.AddDefinition(baseDef);
            //MyDefinitionManager.Static.Definitions.AddOrRelaceDefinition(baseDef);



            //foreach (var test in MyDefinitionManager.Static.Definitions.Definitions[typeof(MyObjectBuilder_Ore)].Keys)
            //{
            //	//test this
            //}

            // 2) Blueprint
            //MyPhysicalItemDefinition siliconIngotDef = MyDefinitionManager.Static.GetPhysicalItemDefinition(new MyDefinitionId(typeof(MyObjectBuilder_Ingot), "Silicon"));

            //BlueprintItem preReq = new BlueprintItem
            //{
            //	Id = newPhysItemDef.Id,
            //	Amount = "1"
            //};

            //BlueprintItem results = new BlueprintItem
            //{
            //	Id = siliconIngotDef.Id,
            //	Amount = "1"
            //};

            //MyObjectBuilder_BlueprintDefinition newBpDefOb = new MyObjectBuilder_BlueprintDefinition
            //{
            //	Id = new MyDefinitionId(typeof(MyObjectBuilder_BlueprintDefinition), "BulletproofGlassToIngot"),
            //	DisplayName = "Bulletproof Glass Scrap",
            //	Icons = new[]
            //	{
            //		Constants.IconLocation + Constants.BulletproofGlassIcon
            //	},
            //	Prerequisites = new[]
            //	{
            //		preReq
            //	},
            //	Results = new[]
            //	{
            //		results
            //	},

            //	BaseProductionTimeInSeconds = 0.04f
            //};

            //MyBlueprintDefinition newBpDef = new MyBlueprintDefinition
            //{
            //	Id = newBpDefOb.Id
            //};

            ////MyBlueprintDefinition newBp = new MyBlueprintDefinition
            ////{
            ////	Id = new MyDefinitionId(typeof(MyObjectBuilder_BlueprintDefinition), "BulletproofGlassToIngot"),
            ////	DisplayNameString = "Bulletproof Glass Scrap",
            ////	Icons = new[]
            ////	{
            ////		Constants.IconLocation + Constants.BulletproofGlassIcon
            ////	},
            ////	Prerequisites = new[]
            ////	{
            ////		new MyBlueprintDefinitionBase.Item
            ////		{
            ////			Amount = 1,
            ////			Id = siliconOreDef.Id
            ////		}
            ////	},
            ////	Results = new[]
            ////	{
            ////		new MyBlueprintDefinitionBase.Item
            ////		{
            ////			Amount = (MyFixedPoint) 6.75,
            ////			Id = siliconIngotDef.Id
            ////		}
            ////	},
            ////	BaseProductionTimeInSeconds = 0.04f
            ////};

            //// 3a) Blueprint Class OB
            //MyObjectBuilder_BlueprintClassDefinition newBpClassDefOb = new MyObjectBuilder_BlueprintClassDefinition
            //{
            //	Id = new SerializableDefinitionId
            //	{
            //		TypeId = typeof(MyObjectBuilder_BlueprintClassDefinition),
            //		SubtypeId = "AwwScrap2"
            //	},
            //	DisplayName = "Scrap Recycling",
            //	Description = "Scrap Recycling",
            //	Icons = new[]
            //	{
            //		"Textures\\GUI\\Icons\\component\\ScrapMetalComponent.dds"
            //	},
            //	HighlightIcon = "Textures\\GUI\\Icons\\component\\ScrapMetalComponent.dds",
            //	InputConstraintIcon = "Textures\\GUI\\Icons\\filter_ore.dds",
            //	OutputConstraintIcon = "Textures\\GUI\\Icons\\filter_ingot.dds"
            //};

            //// 3b) Blueprint Class Definition
            //MyBlueprintClassDefinition newBpClassDef = new MyBlueprintClassDefinition
            //{
            //	Id = newBpClassDefOb.Id
            //};

            ////ReportDefinitions();
            ////ReportDefinitionManager();
            ////ReportCustomDefinition(newPhysItemDef);
            ////ReportOreDefinitions();

            ////MyDefinitionManagerBase.GetPostProcessor(typeof(MyObjectBuilder_Ore)).AfterPostprocess();
            //// 3c) Add Blueprint to Blueprint Class (creates an entry)
            ////x.AddBlueprint(newBpDef);
        }