Esempio n. 1
0
        private TextureSet getSet(PartVariant variant)
        {
            string     setName = variant.GetExtraInfoValue("textureSet");
            TextureSet set     = null;

            if (!string.IsNullOrEmpty(setName))
            {
                set            = TexturesUnlimitedLoader.getTextureSet(setName);
                textureSet     = setName;
                modelShaderSet = string.Empty;
                return(set);
            }
            setName = variant.GetExtraInfoValue("modelShader");
            if (!string.IsNullOrEmpty(setName))
            {
                set            = TexturesUnlimitedLoader.getModelShaderTextureSet(setName);
                modelShaderSet = setName;
                textureSet     = string.Empty;
                return(set);
            }
            //if nothing found, clear out references
            if (TexturesUnlimitedLoader.logErrors || TexturesUnlimitedLoader.logAll)
            {
                MonoBehaviour.print("Could not load texture set for part variant: " + variant?.Name + " for part: " + part.name);
            }
            modelShaderSet = textureSet = string.Empty;
            return(null);
        }
Esempio n. 2
0
        private void ProcessModules(Part oPart, PartVariant oVariant)
        {
            string sValue;
            string sDebug = "";

            sValue = oVariant.GetExtraInfoValue("AddModule1");
            for (int i = 2; !string.IsNullOrEmpty(sValue); i++)
            {
                oPart.AddModule(sValue);
                sValue = oVariant.GetExtraInfoValue("AddModule" + i.ToString());
            }

            List <string> oRemoveModuleList = new List <string>();

            sValue = oVariant.GetExtraInfoValue("RemoveModule1");
            for (int i = 2; !string.IsNullOrEmpty(sValue); i++)
            {
                oRemoveModuleList.Add(sValue);
                sValue = oVariant.GetExtraInfoValue("RemoveModule" + i.ToString());
            }

            foreach (PartModule oModule in oPart.Modules)
            {
                if (Debug.developerConsoleVisible)
                {
                    sDebug = "Module Fields [" + oModule.moduleName + "]:\r\n";
                }

                foreach (BaseField oField in oModule.Fields)
                {
                    if (Debug.developerConsoleVisible)
                    {
                        sDebug += oField.name + "\r\n";
                    }

                    sValue = oVariant.GetExtraInfoValue(oModule.moduleName + "/" + oField.name);

                    if (!string.IsNullOrEmpty(sValue))
                    {
                        oField.SetValue(Convert.ChangeType(sValue, oField.FieldInfo.FieldType), oField.host);

                        if (Debug.developerConsoleVisible)
                        {
                            sDebug += "  Appled: " + oField.name + " = " + sValue + "\r\n";
                        }
                    }
                }

                if (Debug.developerConsoleVisible)
                {
                    Debug.Log(sDebug);
                }
            }
        }
Esempio n. 3
0
        static internal void GetExtraInfo(PartVariant variant, ref float segmentHeight, ref float segmentWidth)
        {
            string strSegmentHeight = variant.GetExtraInfoValue("segmentHeight");
            string strSegmentWidth  = variant.GetExtraInfoValue("segmentWidth");

            if (string.IsNullOrEmpty(strSegmentHeight) || string.IsNullOrEmpty(strSegmentWidth))
            {
                return;
            }
            segmentHeight = float.Parse(strSegmentHeight);
            segmentWidth  = float.Parse(strSegmentWidth);
        }
Esempio n. 4
0
        private void ProcessBase(Part oPart, PartVariant oVariant)
        {
            string sDebug = "";
            string sValue;

            if (IsDebug)
            {
                sDebug = "Base Part Fields [Part]:\r\n";
            }

            foreach (BaseField oField in oPart.Fields)
            {
                if (IsDebug)
                {
                    sDebug += oField.name + "\r\n";
                }

                sValue = oVariant.GetExtraInfoValue("Part/" + oField.name);

                if (!string.IsNullOrEmpty(sValue))
                {
                    oField.SetValue(Convert.ChangeType(sValue, oField.FieldInfo.FieldType), oField.host);

                    if (IsDebug)
                    {
                        sDebug += "  Applied: " + oField.name + " = " + sValue + "\r\n";
                    }
                }
            }

            if (IsDebug)
            {
                Debug.Log(sDebug);
            }
        }
Esempio n. 5
0
        private void onVariantApplied(Part variantPart, PartVariant variant)
        {
            if (variantPart != part)
            {
                return;
            }
            if (string.IsNullOrEmpty(resourceName))
            {
                return;
            }
            if (!part.Resources.Contains(resourceName))
            {
                return;
            }
            string amountString = variant.GetExtraInfoValue(resourceName);

            if (string.IsNullOrEmpty(amountString))
            {
                return;
            }

            double amount = 0;

            if (double.TryParse(amountString, out amount))
            {
                part.Resources[resourceName].maxAmount = amount;
                if (!updateMaxOnly)
                {
                    part.Resources[resourceName].amount = amount;
                }
                MonoUtilities.RefreshContextWindows(part);
                GameEvents.onPartResourceListChange.Fire(part);
            }
        }
Esempio n. 6
0
        private void onVariantApplied(Part variantPart, PartVariant variant)
        {
            if (!shouldRespondToAppliedVariant(variantPart, variant))
            {
                return;
            }

            // If the variant has a meshSet that we recognize, then record it for later.
            string meshSet = variant.GetExtraInfoValue("meshSet");

            if (!string.IsNullOrEmpty(meshSet) && !string.IsNullOrEmpty(meshSets) && meshSets.Contains(meshSet))
            {
                currentMeshSet = meshSet;
                variantApplied = true;
            }

            // Re-apply the variant if we're on the updateVariantModuleIDs list.
            string updateVariants = variant.GetExtraInfoValue("updateVariantModuleIDs");

            if (updateVariants.Contains(moduleID) && variantApplied)
            {
                applyVariant(variantIndex, true);
            }

            // Enable/disable the UI if we're on the list.
            string enabledVariants  = variant.GetExtraInfoValue("enableVariantModuleIDs");
            string disabledVariants = variant.GetExtraInfoValue("disableVariantModuleIDs");

            if (enabledVariants.Contains(moduleID))
            {
                Fields["variantIndex"].guiActive       = allowFieldUpdate;
                Fields["variantIndex"].guiActiveEditor = true;
            }

            else if (disabledVariants.Contains(moduleID))
            {
                Fields["variantIndex"].guiActive       = false;
                Fields["variantIndex"].guiActiveEditor = false;
            }
        }
Esempio n. 7
0
        private void ProcessResources(Part oPart, PartVariant oVariant)
        {
            string       sValue;
            double       dValue;
            double       dValue2;
            PartResource oResource;
            ConfigNode   oConfigNode;

            foreach (PartResourceDefinition oResourceDef in PartResourceLibrary.Instance.resourceDefinitions)
            {
                sValue = oVariant.GetExtraInfoValue("Resource/" + oResourceDef.name);

                if (!string.IsNullOrEmpty(sValue))
                {
                    oResource = oPart.Resources[oResourceDef.name];

                    if (oResource != null)
                    {
                        if (sValue.ToLower() == "none")
                        {
                            oPart.RemoveResource(oResource);
                        }
                        else if (double.TryParse(sValue, out dValue))
                        {
                            if (oResource.maxAmount == 0.0)
                            {
                                dValue2 = 0.0;
                            }
                            else
                            {
                                dValue2 = oResource.amount / oResource.maxAmount;
                            }

                            oResource.maxAmount = dValue;

                            if (HighLogic.LoadedSceneIsEditor)
                            {
                                oResource.amount = dValue * dValue2;
                            }
                        }
                    }
                    else if (double.TryParse(sValue, out dValue))
                    {
                        oConfigNode = new ConfigNode("RESOURCE");
                        oConfigNode.AddValue("name", oResourceDef.name);

                        if (HighLogic.LoadedSceneIsEditor)
                        {
                            oConfigNode.AddValue("amount", dValue);
                        }
                        else
                        {
                            oConfigNode.AddValue("amount", 0.0);
                        }

                        oConfigNode.AddValue("maxAmount", dValue);

                        oPart.AddResource(oConfigNode);
                    }
                }
            }
        }