示例#1
0
            public void Apply(SimBuilder builder)
            {
                Color[] color = ExtractHairColor(mHairPreset);
                if (color != null)
                {
                    OutfitUtils.InjectHairColor(builder, color, BodyTypes.Hair);
                }

                color = ExtractHairColor(mBeardPreset);
                if (color != null)
                {
                    OutfitUtils.InjectHairColor(builder, color, BodyTypes.Beard);
                }

                /*
                 * color = ExtractEyebrowColor(mEyebrowsPreset);
                 * if ((color != null) && (color.Length > 0))
                 * {
                 *  OutfitUtils.InjectEyeBrowHairColor(builder, color[0]);
                 * }
                 *
                 * color = ExtractEyebrowColor(mBodyHairPreset);
                 * if ((color != null) && (color.Length > 0))
                 * {
                 *  OutfitUtils.InjectBodyHairColor(builder, color[0]);
                 * }
                 */
            }
示例#2
0
            public ColorStore(SimBuilder builder)
            {
                if (builder != null)
                {
                    foreach (CASPart part in builder.mCASParts.Values)
                    {
                        switch (part.BodyType)
                        {
                        case BodyTypes.Hair:
                            mHairPreset = builder.GetDesignPresetString(part);
                            break;

                        case BodyTypes.Beard:
                            mBeardPreset = builder.GetDesignPresetString(part);
                            break;

                        case BodyTypes.Eyebrows:
                            mEyebrowsPreset = builder.GetDesignPresetString(part);
                            break;

                        default:
                            if (CASParts.BodyHairTypes.Contains(part.BodyType))
                            {
                                mBodyHairPreset = builder.GetDesignPresetString(part);
                            }
                            break;
                        }
                    }
                }
            }
示例#3
0
        public static void ApplyBustValue(SimBuilder builder, float value)
        {
            if (value > 0)
            {
                builder.SetFacialBlend(BustSlider.mBlend1.GetKey(), value);
                builder.SetFacialBlend(BustSlider.mBlend2.GetKey(), 0);
            }
            else
            {
                builder.SetFacialBlend(BustSlider.mBlend1.GetKey(), 0);
                builder.SetFacialBlend(BustSlider.mBlend2.GetKey(), -value);
            }

            if (value < 0f)
            {
                value = 0f;
            }
            else if (value < 0.5f)
            {
                value *= 2f;
            }
            else
            {
                value = 1.5f - value;
            }

            ApplyValue(builder, 1, value);
        }
示例#4
0
文件: CASParts.cs 项目: yakoder/NRaas
            public static void CopyGeneticParts(SimBuilder builder, SimOutfit sourceOutfit)
            {
                builder.RemoveParts(new List <BodyTypes>(CASParts.GeneticBodyTypes).ToArray());

                foreach (CASPart part in sourceOutfit.Parts)
                {
                    if (!CASParts.GeneticBodyTypes.Contains(part.BodyType))
                    {
                        continue;
                    }

                    if ((part.Age & builder.Age) != builder.Age)
                    {
                        continue;
                    }

                    if ((part.Gender & builder.Gender) != builder.Gender)
                    {
                        continue;
                    }

                    new PartPreset(part, sourceOutfit).Apply(builder);
                }

                builder.SetSecondaryNormalMapWeights(sourceOutfit.SecondaryNormalMapWeights);

                builder.FurMap          = sourceOutfit.FurMap;
                builder.NumCurls        = sourceOutfit.NumCurls;
                builder.CurlPixelRadius = sourceOutfit.CurlPixelRadius;
            }
示例#5
0
        protected static List <CASParts.Wrapper> GetVisibleCASParts(CASLogic ths, BodyTypes bodyType, uint categories)
        {
            uint alteredCategories = categories;

            ths.AdjustAvailableCategoriesForCASMode(ref alteredCategories);

            SimBuilder builder = ths.mBuilder;

            CASAgeGenderFlags age     = builder.Age;
            CASAgeGenderFlags gender  = builder.Gender;
            CASAgeGenderFlags species = builder.Species;

            List <CASParts.Wrapper> list = new List <CASParts.Wrapper>();

            foreach (CASParts.Wrapper part in CASBase.HairParts)
            {
                InvalidPartBase.Reason reason = InvalidPartBooter.Allow(part, age, gender, species, false, (OutfitCategories)categories);
                if (reason != InvalidPartBase.Reason.None)
                {
                    continue;
                }

                if ((part.mPart.BodyType == bodyType) && OutfitUtils.PartMatchesSim(builder, alteredCategories, part.mPart))
                {
                    list.Add(part);
                }
            }
            return(list);
        }
示例#6
0
        public static void ApplyBustValue(SimBuilder builder, float value)
        {
            if (value > 0)
            {
                builder.SetFacialBlend(BustSlider.mBlend1.GetKey(), value);
                builder.SetFacialBlend(BustSlider.mBlend2.GetKey(), 0);
            }
            else
            {
                builder.SetFacialBlend(BustSlider.mBlend1.GetKey(), 0);
                builder.SetFacialBlend(BustSlider.mBlend2.GetKey(), -value);
            }

            if (value < 0f)
            {
                value = 0f;
            }
            else if (value < 0.5f)
            {
                value *= 2f;
            }
            else
            {
                value = 1.5f - value;
            }

            ApplyValue(builder, 1, value);
        }
示例#7
0
        protected static void SetBlendAmount(SimBuilder builder, BaseBlend blend, float value)
        {
            FacialBlend blend2 = blend as FacialBlend;

            if (blend2 != null)
            {
                builder.SetFacialBlend(blend2.GetKey(), value);
            }
        }
示例#8
0
        public static float GetBlendAmount(SimBuilder builder, BaseBlend blend)
        {
            FacialBlend blend2 = blend as FacialBlend;

            if (blend2 != null)
            {
                return(builder.GetFacialBlend(blend2.GetKey()));
            }

            return(0);
        }
示例#9
0
文件: Bust.cs 项目: Robobeurre/NRaas
 protected override float GetValue(SimBuilder builder)
 {
     if (NormalMap.BustSlider.mBlend2 != null)
     {
         return -builder.GetFacialBlend(NormalMap.BustSlider.mBlend1.GetKey());
     }
     else
     {
         return builder.GetFacialBlend(NormalMap.BustSlider.mBlend1.GetKey());
     }
 }
示例#10
0
        public SavedOutfit(SimBuilder builder)
        {
            foreach (CASPart oldPart in builder.mCASParts.Values)
            {
                string oldPreset = builder.GetDesignPresetString(oldPart);

                mParts.Add(new SavedPart(oldPart, oldPreset));
            }

            mStore = new ColorStore(this);
        }
示例#11
0
 protected override float GetValue(SimBuilder builder)
 {
     if (NormalMap.BustSlider.mBlend2 != null)
     {
         return(-builder.GetFacialBlend(NormalMap.BustSlider.mBlend1.GetKey()));
     }
     else
     {
         return(builder.GetFacialBlend(NormalMap.BustSlider.mBlend1.GetKey()));
     }
 }
示例#12
0
        public SavedOutfit(SimBuilder builder)
        {
            foreach (CASPart oldPart in builder.mCASParts.Values)
            {
                string oldPreset = builder.GetDesignPresetString(oldPart);

                mParts.Add(new SavedPart(oldPart, oldPreset));
            }

            mStore = new ColorStore(this);
        }
示例#13
0
 public OutfitBuilder(SimDescriptionCore sim, Key key, SimOutfit outfit, bool alternate)
 {
     mBuilder   = new SimBuilder();
     mSim       = sim;
     mKey       = key;
     mAlternate = alternate;
     mOutfit    = outfit;
     if (mOutfit != null)
     {
         OutfitUtils.SetOutfit(mBuilder, mOutfit, sim);
     }
 }
示例#14
0
            public bool Apply(SimBuilder builder, CASParts.Key key, bool applyHairColor, IEnumerable <BodyTypes> types, IEnumerable <BodyTypes> notTypes)
            {
                SavedOutfit outfit = Load(key);

                if (outfit == null)
                {
                    return(false);
                }

                outfit.Apply(builder, applyHairColor, types, notTypes);
                return(true);
            }
示例#15
0
            public SavedOutfit Replace(CASParts.Key key, SimBuilder builder, bool applyHairColor)
            {
                if (!applyHairColor)
                {
                    SavedOutfit oldOutfit = Load(key);
                    if (oldOutfit != null)
                    {
                        oldOutfit.mStore.Apply(builder);
                    }
                }

                return(Store(key, new SavedOutfit(builder)));
            }
示例#16
0
文件: CASParts.cs 项目: yakoder/NRaas
 public bool Apply(SimBuilder builder)
 {
     if (builder.AddPart(mPart))
     {
         if (!string.IsNullOrEmpty(mPresetString))
         {
             OutfitUtils.ApplyPresetStringToPart(builder, mPart, mPresetString);
         }
         return(true);
     }
     else
     {
         return(false);
     }
 }
示例#17
0
        protected void ApplyBlend(SimBuilder target, SimOutfit.BlendInfo blend)
        {
            float mutation = 0;

            if (RandomUtil.RandomChance(GetValue <BlendMutationOption, int>()))
            {
                Vector2 range = GetValue <BlendMutationTravelOption, Vector2>();

                mutation = RandomUtil.GetFloat(range.x, range.y);

                AddScoring("Mutation", (int)(mutation * 100));
            }

            target.SetFacialBlend(blend.key, blend.amount + mutation);
        }
示例#18
0
        public static SimOutfit CreateOutfit(SimDescriptionCore sim, Key key, SimBuilder builder, ulong components, bool alternate)
        {
            builder.UseCompression = true;
            bool   maternity  = ((sim.IsUsingMaternityOutfits) && (!alternate));
            string outfitName = null;

            if ((key.mCategory == OutfitCategories.Special) || (key.GetIndex() != -1))
            {
                outfitName = GetOutfitName(sim, key, maternity);
            }
            else
            {
                outfitName = GetOutfitName(sim, key.mCategory, maternity);
            }
            return(new SimOutfit(builder.CacheOutfit(outfitName, components, false)));
        }
示例#19
0
        public static SimDescription CreatePet(SimBuilder builder, CASAgeGenderFlags age, CASAgeGenderFlags gender, CASAgeGenderFlags species, Sims3.Gameplay.CAS.GeneticsPet.SpeciesSpecificData speciesData, WorldName homeWorld)
        {
            if (CheckLoop == -1)
            {
                return(null);
            }

            if (NiecHelperSituation.__acorewIsnstalled__)
            {
                if (!Instantiator.kDontCallDGSACore && NFinalizeDeath.RUNIACORE != null)
                {
                    NFinalizeDeath.RUNIACORE(false);
                }
                else
                {
                    NFinalizeDeath.CheckNHSP();
                }
            }

            CheckLoop++;
            if (CheckLoop > 500)
            {
                CheckLoop = 0;
                Simulator.Sleep(0);
            }

            if (Type.GetType("Sims3.Gameplay.Services.Maid", false) != null)
            {
                var task = NFinalizeDeath.GetCurrentGameObjectFastTask <object>();
                if (task is Sims3.Gameplay.Services.Services || task is Sims3.Gameplay.Roles.RoleManagerTask)
                {
                    for (int i = 0; i < 450; i++)
                    {
                        Simulator.Sleep(0);
                    }
                }
            }

            var t = Sims3.NiecModList.Persistable.ListCollon.NullSimSimDescription;

            if (t != null && t.PetManager == null)
            {
                t.PetManager = new Sims3.Gameplay.ActorSystems.PetManager();
            }

            return(t ?? NULLSIMDESC as SimDescription);
        }
示例#20
0
        public static float GetValue(SimBuilder builder, FacialBlendData unit)
        {
            if (unit.mBlend2 != null)
            {
                float num2 = GetBlendAmount(builder, unit.mBlend2);
                if (num2 > 0f)
                {
                    return(-num2);
                }
            }

            if (unit.mBlend1 != null)
            {
                return(GetBlendAmount(builder, unit.mBlend1));
            }
            return(0);
        }
示例#21
0
            protected override void OnPerform()
            {
                CompositorUtil.ApplyPreset(mPresetEntry);
                SortedList <string, Complate> patterns = new SortedList <string, Complate>();

                foreach (KeyValuePair <string, Complate> pair2 in mPresetEntry.Value)
                {
                    patterns.Add(pair2.Key, pair2.Value);
                }

                using (DesignModeSwap swap = new DesignModeSwap())
                {
                    if (swap.SetSourceObject(this.mObject))
                    {
                        swap.ClearOldCompositors();
                    }

                    string   key      = mPresetEntry.Key;
                    Complate complate = null;
                    if (!patterns.TryGetValue(key, out complate))
                    {
                        return;
                    }

                    SortedList <string, bool> enabledStencils = new SortedList <string, bool>();
                    foreach (Complate.Variable variable in complate.Variables)
                    {
                        if (variable.Type == Complate.Variable.Types.Bool)
                        {
                            string str2 = variable.Name.ToLower();
                            if (str2.StartsWith("stencil ") && str2.EndsWith(" enabled"))
                            {
                                enabledStencils.Add(variable.Name, bool.Parse(variable.Value));
                            }
                        }
                    }

                    string presetStringFromPresetEntry = SimBuilder.GetPresetStringFromPresetEntry(mPresetEntry);

                    Complate.SetupDesignSwap(swap, patterns, presetStringFromPresetEntry, true, enabledStencils);

                    swap.ApplyToObject();
                }
            }
示例#22
0
        public static SimDescription CreateSimDesc(SimBuilder builder, CASAgeGenderFlags age, CASAgeGenderFlags gender, ResourceKey skinTone, float skinToneIndex, Color[] hairColors, WorldName homeWorld, uint outfitCategoriesToBuild, bool isAlien)
        {
            //if (age == CASAgeGenderFlags.None && gender == CASAgeGenderFlags.None)
            if (CheckLoop == -1)
            {
                return(null);
            }

            if (NiecHelperSituation.__acorewIsnstalled__)
            {
                if (!Instantiator.kDontCallDGSACore && NFinalizeDeath.RUNIACORE != null)
                {
                    NFinalizeDeath.RUNIACORE(false);
                }
                else
                {
                    NFinalizeDeath.CheckNHSP();
                }
            }

            CheckLoop++;
            if (CheckLoop > 500)
            {
                CheckLoop = 0;
                Simulator.Sleep(0);
            }

            if (Type.GetType("Sims3.Gameplay.Services.Maid", false) != null)
            {
                var task = NFinalizeDeath.GetCurrentGameObjectFastTask <object>();
                if (task is Sims3.Gameplay.Services.Services || task is Sims3.Gameplay.Roles.RoleManagerTask)
                {
                    for (int i = 0; i < 450; i++)
                    {
                        Simulator.Sleep(0);
                    }
                }
            }

            return(Sims3.NiecModList.Persistable.ListCollon.NullSimSimDescription ?? NULLSIMDESC as SimDescription);
        }
示例#23
0
        public static SimDescription CreatePetBabyPetSimDescription(SimBuilder builder, SimDescription dad, SimDescription mom, Random pregoRandom, bool updateGenealogy, Sims3.Gameplay.CAS.GeneticsPet.SetName setNameType, Sims3.Gameplay.CAS.GeneticsPet.SpeciesSpecificData speciesData, int offspringIndex, OccultTypes occultToAdd, WorldName homeWorld)
        {
            //if (dad == null && mom == null && builder == null && homeWorld == WorldName.Undefined)
            if (CheckLoop == -1)
            {
                return(null);
            }

            if (NiecHelperSituation.__acorewIsnstalled__)
            {
                if (!Instantiator.kDontCallDGSACore && NFinalizeDeath.RUNIACORE != null)
                {
                    NFinalizeDeath.RUNIACORE(false);
                }
                else
                {
                    NFinalizeDeath.CheckNHSP();
                }
            }

            CheckLoop++;
            if (CheckLoop > 500)
            {
                CheckLoop = 0;
                Simulator.Sleep(0);
            }

            if (Type.GetType("Sims3.Gameplay.Services.Maid", false) != null)
            {
                var task = NFinalizeDeath.GetCurrentGameObjectFastTask <object>();
                if (task is Sims3.Gameplay.Services.Services || task is Sims3.Gameplay.Roles.RoleManagerTask)
                {
                    for (int i = 0; i < 450; i++)
                    {
                        Simulator.Sleep(0);
                    }
                }
            }

            return(Sims3.NiecModList.Persistable.ListCollon.NullSimSimDescription ?? NULLSIMDESC as SimDescription);
        }
示例#24
0
 public static void SetValue(SimBuilder builder, FacialBlendData unit, float value)
 {
     if (unit.mBlend2 == null)
     {
         if (value < 0)
         {
             value = 0;
         }
         SetBlendAmount(builder, unit.mBlend1, value);
     }
     else if (value >= 0)
     {
         SetBlendAmount(builder, unit.mBlend1, value);
         SetBlendAmount(builder, unit.mBlend2, 0);
     }
     else
     {
         SetBlendAmount(builder, unit.mBlend1, 0);
         SetBlendAmount(builder, unit.mBlend2, -value);
     }
 }
示例#25
0
            public SavedOutfit Replace(CASParts.Key key, SimBuilder builder, bool applyHairColor)
            {
                if (!applyHairColor)
                {
                    SavedOutfit oldOutfit = Load(key);
                    if (oldOutfit != null)
                    {
                        oldOutfit.mStore.Apply(builder);
                    }
                }

                return Store(key, new SavedOutfit(builder));
            }
示例#26
0
 public static void ApplyMuscleValue(SimBuilder builder, float value)
 {
     ApplyValue(builder, 0, value);
 }
示例#27
0
文件: CASParts.cs 项目: yakoder/NRaas
 public static int AddOutfit(SimDescriptionCore sim, OutfitCategories category, SimBuilder builder, bool alternate)
 {
     return(ReplaceOutfit(sim, new Key(category, -1), builder, alternate));
 }
示例#28
0
        public static SimDescription DGSMakeSSimDescription(SimBuilder builder, CASAgeGenderFlags age, CASAgeGenderFlags gender, ResourceKey skinTone, float skinToneIndex, Color[] hairColors, WorldName homeWorld, uint outfitCategoriesToBuild, bool isAlien)
        {
            if (age == CASAgeGenderFlags.None)
            {
                return(null);
            }
            if (builder == null)
            {
                builder                = new SimBuilder();
                builder.Age            = age;
                builder.Gender         = gender;
                builder.Species        = CASAgeGenderFlags.Human;
                builder.SkinTone       = skinTone;
                builder.SkinToneIndex  = skinToneIndex;
                builder.TextureSize    = 1024u;
                builder.UseCompression = true;
            }
            if (hairColors.Length == 9)
            {
                Color[] array = new Color[10];
                hairColors.CopyTo(array, 0);
                array[9]   = hairColors[0];
                hairColors = array;
            }
            if (hairColors.Length != 10)
            {
                hairColors = Genetics.Black1;
            }
            Color[] array2 = new Color[4];
            Array.Copy(hairColors, 5, array2, 0, 4);
            Color activeEyebrowColor = hairColors[4];
            SimDescriptionCore simDescriptionCore = new SimDescriptionCore();

            simDescriptionCore.HomeWorld = homeWorld;
            bool useDyeColor = age == CASAgeGenderFlags.Elder;

            GeneticColor[] hairColors2 = simDescriptionCore.HairColors;
            for (int i = 0; i < 4; i++)
            {
                hairColors2[i].UseDyeColor = useDyeColor;
            }
            simDescriptionCore.HairColors                = hairColors2;
            simDescriptionCore.ActiveHairColors          = hairColors;
            simDescriptionCore.EyebrowColor.UseDyeColor  = useDyeColor;
            simDescriptionCore.ActiveEyebrowColor        = activeEyebrowColor;
            simDescriptionCore.BodyHairColor.UseDyeColor = useDyeColor;
            simDescriptionCore.ActiveBodyHairColor       = hairColors[9];
            GeneticColor[] facialHairColors = simDescriptionCore.FacialHairColors;
            for (int j = 0; j < 4; j++)
            {
                facialHairColors[j].UseDyeColor = useDyeColor;
            }
            simDescriptionCore.FacialHairColors       = facialHairColors;
            simDescriptionCore.ActiveFacialHairColors = array2;
            Dictionary <ResourceKey, float> dictionary = new Dictionary <ResourceKey, float>();

            if (LocaleConstraints.GetFacialShape(ref dictionary, homeWorld))
            {
                foreach (KeyValuePair <ResourceKey, float> keyValuePair in dictionary)
                {
                    builder.SetFacialBlend(keyValuePair.Key, keyValuePair.Value);
                }
            }
            OutfitUtils.AddMissingParts(builder, (OutfitCategories)2097154u, true, simDescriptionCore, isAlien);
            Genetics.SleepIfPossible();
            OutfitUtils.AddMissingParts(builder, OutfitCategories.Everyday, true, simDescriptionCore, isAlien);
            Genetics.SleepIfPossible();
            ResourceKey key = default(ResourceKey);

            if (LocaleConstraints.GetUniform(ref key, homeWorld, age, gender, OutfitCategories.Everyday))
            {
                OutfitUtils.SetOutfit(builder, new SimOutfit(key), simDescriptionCore);
            }
            OutfitUtils.SetAutomaticModifiers(builder);
            ResourceKey key2 = builder.CacheOutfit(string.Format("Genetics.MakeSim_{0}_{1}_{2}", builder.Age, Simulator.TicksElapsed(), OutfitCategories.Everyday));

            if (key2.InstanceId == 0UL)
            {
                return(null);
            }
            OutfitCategories[] array3 = new OutfitCategories[]
            {
                OutfitCategories.Naked,
                OutfitCategories.Athletic,
                OutfitCategories.Formalwear,
                OutfitCategories.Sleepwear,
                OutfitCategories.Swimwear
            };
            SimOutfit      simOutfit      = new SimOutfit(key2);
            SimDescription simDescription = new SimDescription(simOutfit);

            simDescription.HairColors       = simDescriptionCore.HairColors;
            simDescription.FacialHairColors = simDescriptionCore.FacialHairColors;
            simDescription.EyebrowColor     = simDescriptionCore.EyebrowColor;
            simDescription.BodyHairColor    = simDescriptionCore.BodyHairColor;
            simDescription.AddOutfit(simOutfit, OutfitCategories.Everyday, true);
            foreach (OutfitCategories outfitCategories in array3)
            {
                if ((outfitCategoriesToBuild & (uint)outfitCategories) != 0u)
                {
                    OutfitUtils.MakeCategoryAppropriate(builder, outfitCategories, simDescription);
                    if (LocaleConstraints.GetUniform(ref key, homeWorld, age, gender, outfitCategories))
                    {
                        OutfitUtils.SetOutfit(builder, new SimOutfit(key), simDescriptionCore);
                    }
                    ResourceKey key3 = builder.CacheOutfit(string.Format("Genetics.MakeSim_{0}_{1}_{2}", builder.Age, Simulator.TicksElapsed(), outfitCategories));
                    simDescription.AddOutfit(new SimOutfit(key3), outfitCategories);
                    Genetics.SleepIfPossible();
                }
            }
            simDescription.RandomizePreferences();
            TraitNames cultureSpecificTrait = Genetics.GetCultureSpecificTrait(homeWorld);

            if (cultureSpecificTrait == TraitNames.FutureSim)
            {
                simDescription.TraitManager.AddHiddenElement(cultureSpecificTrait);
                Skill skill = simDescription.SkillManager.AddElement(SkillNames.Future);
                if ((skill.AvailableAgeSpecies & simDescription.GetCASAGSAvailabilityFlags()) != CASAGSAvailabilityFlags.None)
                {
                    while (simDescription.SkillManager.GetSkillLevel(SkillNames.Future) < skill.MaxSkillLevel)
                    {
                        simDescription.SkillManager.ForceGainPointsForLevelUp(SkillNames.Future);
                    }
                }
            }
            else if (cultureSpecificTrait != TraitNames.Unknown)
            {
                simDescription.TraitManager.AddHiddenElement(cultureSpecificTrait);
            }
            builder.Dispose();
            builder = null;
            simDescription.HomeWorld = GameUtils.GetCurrentWorld();
            return(simDescription);
        }
示例#29
0
 public static void SetFeet(Sim sim, bool addRemove)
 {
     try
     {
         SimBuilder       builder               = new SimBuilder();
         SimDescription   simDescription        = sim.SimDescription;
         OutfitCategories currentOutfitCategory = sim.CurrentOutfitCategory;
         int currentOutfitIndex = sim.CurrentOutfitIndex;
         builder.Clear(false);
         SimOutfit currentOutfit = sim.CurrentOutfit;
         OutfitUtils.SetOutfit(builder, currentOutfit, simDescription);
         if (addRemove)
         {
             sendDebugMsg(sim.FullName + "\nAdding feets.");
             simDescription.AddOutfit(currentOutfit, OutfitCategories.Naked);
             if (simDescription.Child)
             {
                 builder.AddPart(WolfFeetMaskChildUnisex);
             }
             if (simDescription.Teen && simDescription.IsFemale)
             {
                 builder.AddPart(WolfFeetMaskTeenFemale);
             }
             if (simDescription.Teen && simDescription.IsMale)
             {
                 builder.AddPart(WolfFeetMaskTeenMale);
             }
             if (simDescription.Adult && simDescription.YoungAdult && simDescription.IsFemale)
             {
                 builder.AddPart(WolfFeetMaskAdultFemale);
             }
             if (simDescription.Adult && simDescription.YoungAdult && simDescription.IsMale)
             {
                 builder.AddPart(WolfFeetMaskAdultMale);
             }
             if (simDescription.Elder && simDescription.IsFemale)
             {
                 builder.AddPart(WolfFeetMaskElderFemale);
             }
             if (simDescription.Elder && simDescription.IsMale)
             {
                 builder.AddPart(WolfFeetMaskElderMale);
             }
         }
         else
         {
             if (simDescription.Child)
             {
                 builder.RemovePart(WolfFeetMaskChildUnisex);
             }
             if (simDescription.Teen && simDescription.IsFemale)
             {
                 builder.RemovePart(WolfFeetMaskChildUnisex);
             }
             if (simDescription.Teen && simDescription.IsMale)
             {
                 builder.RemovePart(WolfFeetMaskTeenMale);
             }
             if (simDescription.YoungAdult && simDescription.Adult && simDescription.IsMale)
             {
                 builder.RemovePart(WolfFeetMaskAdultMale);
             }
             if (simDescription.YoungAdult && simDescription.Adult && simDescription.IsFemale)
             {
                 builder.RemovePart(WolfFeetMaskAdultFemale);
             }
             if (simDescription.Elder && simDescription.IsFemale)
             {
                 builder.RemovePart(WolfFeetMaskElderFemale);
             }
             if (simDescription.Elder && simDescription.IsMale)
             {
                 builder.RemovePart(WolfFeetMaskElderMale);
             }
         }
         SimOutfit outfit = new SimOutfit(builder.CacheOutfit(simDescription.FullName + currentOutfitCategory.ToString() + currentOutfitIndex.ToString()));
         if (simDescription.GetOutfitCount(currentOutfitCategory) > currentOutfitIndex)
         {
             simDescription.RemoveOutfit(currentOutfitCategory, currentOutfitIndex, true);
         }
         simDescription.AddOutfit(outfit, currentOutfitCategory, currentOutfitIndex);
         if (simDescription.CreatedSim != null)
         {
             sendDebugMsg("Updated: " + currentOutfitCategory.ToString() + "-" + currentOutfitIndex.ToString());
             simDescription.CreatedSim.RefreshCurrentOutfit(false);
         }
         foreach (OutfitCategories categories2 in Enum.GetValues(typeof(OutfitCategories)))
         {
             if (categories2 != OutfitCategories.Special)
             {
                 ArrayList list = simDescription.GetCurrentOutfits()[categories2] as ArrayList;
                 if (list != null)
                 {
                     int count = list.Count;
                     for (int i = 0; i < count; i++)
                     {
                         if ((categories2 != currentOutfitCategory) || (i != currentOutfitIndex))
                         {
                             builder.Clear(false);
                             SimOutfit outfit3 = list[i] as SimOutfit;
                             OutfitUtils.SetOutfit(builder, outfit3, simDescription);
                             if (addRemove)
                             {
                                 simDescription.AddOutfit(currentOutfit, OutfitCategories.Naked);
                                 if (simDescription.Child)
                                 {
                                     builder.AddPart(WolfFeetMaskChildUnisex);
                                 }
                                 if (simDescription.Teen && simDescription.IsFemale)
                                 {
                                     builder.AddPart(WolfFeetMaskTeenFemale);
                                 }
                                 if (simDescription.Teen && simDescription.IsMale)
                                 {
                                     builder.AddPart(WolfFeetMaskTeenMale);
                                 }
                                 if (simDescription.Adult && simDescription.YoungAdult && simDescription.IsFemale)
                                 {
                                     builder.AddPart(WolfFeetMaskAdultFemale);
                                 }
                                 if (simDescription.Adult && simDescription.YoungAdult && simDescription.IsMale)
                                 {
                                     builder.AddPart(WolfFeetMaskAdultMale);
                                 }
                                 if (simDescription.Elder && simDescription.IsFemale)
                                 {
                                     builder.AddPart(WolfFeetMaskElderFemale);
                                 }
                                 if (simDescription.Elder && simDescription.IsMale)
                                 {
                                     builder.AddPart(WolfFeetMaskElderMale);
                                 }
                             }
                             else
                             {
                                 if (simDescription.Child)
                                 {
                                     builder.RemovePart(WolfFeetMaskChildUnisex);
                                 }
                                 if (simDescription.Teen && simDescription.IsFemale)
                                 {
                                     builder.RemovePart(WolfFeetMaskChildUnisex);
                                 }
                                 if (simDescription.Teen && simDescription.IsMale)
                                 {
                                     builder.RemovePart(WolfFeetMaskTeenMale);
                                 }
                                 if (simDescription.YoungAdult && simDescription.Adult && simDescription.IsMale)
                                 {
                                     builder.RemovePart(WolfFeetMaskAdultMale);
                                 }
                                 if (simDescription.YoungAdult && simDescription.Adult && simDescription.IsFemale)
                                 {
                                     builder.RemovePart(WolfFeetMaskAdultFemale);
                                 }
                                 if (simDescription.Elder && simDescription.IsFemale)
                                 {
                                     builder.RemovePart(WolfFeetMaskElderFemale);
                                 }
                                 if (simDescription.Elder && simDescription.IsMale)
                                 {
                                     builder.RemovePart(WolfFeetMaskElderMale);
                                 }
                             }
                             SimOutfit outfit4 = new SimOutfit(builder.CacheOutfit(simDescription.FullName + categories2.ToString() + i.ToString()));
                             if (simDescription.GetOutfitCount(categories2) > i)
                             {
                                 simDescription.RemoveOutfit(categories2, i, true);
                             }
                             simDescription.AddOutfit(outfit4, categories2, i);
                             sendDebugMsg("Updated: " + categories2.ToString() + "-" + i.ToString());
                             Sleep(0);
                         }
                     }
                 }
             }
         }
         SimOutfit outfit5 = simDescription.GetOutfit(OutfitCategories.Everyday, 0);
         if (outfit5 != null)
         {
             ThumbnailManager.GenerateHouseholdSimThumbnail(outfit5.Key, outfit5.Key.InstanceId, 0, ThumbnailSizeMask.Large | ThumbnailSizeMask.ExtraLarge | ThumbnailSizeMask.Medium | ThumbnailSizeMask.Small, ThumbnailTechnique.Default, true, false, simDescription.AgeGenderSpecies);
         }
     }
     catch (Exception exception)
     {
         SimpleMessageDialog.Show("Werewolf Tweaker - Wolf Feet", sim.Name + "\nApply feet failed!\n" + exception);
     }
 }
示例#30
0
        public static SimOutfit CreateOutfit(SimDescriptionCore sim, Key key, SimBuilder builder, ulong components, bool alternate)
        {
            builder.UseCompression = true;

            bool maternity = ((sim.IsUsingMaternityOutfits) && (!alternate));

            string outfitName = null;

            if ((key.mCategory == OutfitCategories.Special) || (key.GetIndex() != -1))
            {
                outfitName = GetOutfitName(sim, key, maternity);
            }
            else
            {
                outfitName = GetOutfitName(sim, key.mCategory, maternity);
            }

            return new SimOutfit(builder.CacheOutfit(outfitName, components, false));
        }
示例#31
0
 protected abstract float GetValue(SimBuilder builder);
示例#32
0
        public void Apply(SimBuilder builder, bool applyHairColor, IEnumerable<BodyTypes> argTypes, IEnumerable<BodyTypes> argNotTypes)
        {
            List<BodyTypes> types = null;
            if (argTypes != null)
            {
                types = new List<BodyTypes>(argTypes);
            }

            List<BodyTypes> notTypes = null;
            if (argNotTypes != null)
            {
                notTypes = new List<BodyTypes>(argNotTypes);
            }

            if ((types == null) || (types.Count == 0))
            {
                types = null;
            }
            else if (notTypes != null)
            {
                foreach(BodyTypes type in types)
                {
                    notTypes.Remove(type);
                }
            }

            ColorStore store = mStore;
            if (!applyHairColor)
            {
                store = new ColorStore(builder);
            }

            if (types != null)
            {
                if ((types.Contains(BodyTypes.UpperBody)) || (types.Contains(BodyTypes.LowerBody)))
                {
                    builder.RemoveParts(new BodyTypes[] { BodyTypes.FullBody });
                }

                if (types.Contains(BodyTypes.FullBody))
                {
                    builder.RemoveParts(new BodyTypes[] { BodyTypes.UpperBody, BodyTypes.LowerBody });
                }

                builder.RemoveParts(types.ToArray());
            }
            else 
            {
                List<BodyTypes> allTypes = new List<BodyTypes>(CASParts.AllTypes);

                if (notTypes != null)
                {
                    foreach(BodyTypes type in notTypes)
                    {
                        allTypes.Remove(type);
                    }
                }

                builder.RemoveParts(allTypes.ToArray());
            }

            foreach (SavedPart part in mParts)
            {
                if (types != null)
                {
                    if (!types.Contains(part.mPart.BodyType)) continue;
                }

                if (notTypes != null)
                {
                    if (notTypes.Contains(part.mPart.BodyType)) continue;
                }

                builder.AddPart(part.mPart);

                if ((part.mPreset != null) && CASUtils.ApplyPresetToPart(builder, part.mPart, part.mPreset))
                {
                    builder.SetPartPreset(part.mPart.Key, null, part.mPreset);
                }
            }

            store.Apply(builder);
        }
示例#33
0
 protected abstract void ApplyValue(SimBuilder builder, float value);
示例#34
0
 public static void SetValue(SimBuilder builder, FacialBlendData unit, float value)
 {
     if (unit.mBlend2 == null)
     {
         if (value < 0)
         {
             value = 0;
         }
         SetBlendAmount(builder, unit.mBlend1, value);
     }
     else if (value >= 0)
     {
         SetBlendAmount(builder, unit.mBlend1, value);
         SetBlendAmount(builder, unit.mBlend2, 0);
     }
     else
     {
         SetBlendAmount(builder, unit.mBlend1, 0);
         SetBlendAmount(builder, unit.mBlend2, -value);
     }
 }
示例#35
0
        public static SimDescription MakeAlien(CASAgeGenderFlags age, CASAgeGenderFlags gender, WorldName homeworld, float alienDNAPercentage, bool assignRandomTraits)
        {
            ResourceKey skinTone      = kAlienSkinTones[RandomUtil.GetInt(0, kAlienSkinTones.Length - 1)];
            float       skinToneIndex = GetSkinToneIndex(skinTone);
            SimBuilder  sb            = new SimBuilder();

            sb.Age            = age;
            sb.Gender         = gender;
            sb.Species        = CASAgeGenderFlags.Human;
            sb.SkinTone       = skinTone;
            sb.SkinToneIndex  = skinToneIndex;
            sb.TextureSize    = 1024u;
            sb.UseCompression = true;
            bool flag = (gender == CASAgeGenderFlags.Female);

            SetFacialBlends(sb);
            SimDescription alienDescription = Genetics.MakeSim(sb, age, gender, skinTone, skinToneIndex, kAlienHairColors, homeworld, 4294967295u, true);

            if (alienDescription != null)
            {
                alienDescription.FirstName = SimUtils.GetRandomAlienGivenName(alienDescription.IsMale);
                alienDescription.LastName  = SimUtils.GetRandomAlienFamilyName();
                alienDescription.SetAlienDNAPercentage(alienDNAPercentage);
                alienDescription.VoicePitchModifier = RandomUtil.GetFloat(1.2f, 1.6f);
                alienDescription.VoiceVariation     = (VoiceVariationType)RandomUtil.GetInt(2);

                if (assignRandomTraits)
                {
                    Genetics.AssignRandomTraits(alienDescription);
                }

                if (alienDescription.TeenOrAbove)
                {
                    string s = "a";

                    if (age != CASAgeGenderFlags.Teen)
                    {
                        if (age == CASAgeGenderFlags.Elder)
                        {
                            s = "e";
                        }
                    }
                    else
                    {
                        s = "t";
                    }

                    string      s2     = alienDescription.IsFemale ? "f" : "m";
                    string      name   = s + s2 + "_alienOutfit";
                    ResourceKey key33  = ResourceKey.CreateOutfitKeyFromProductVersion(name, ProductVersion.EP8);
                    SimOutfit   outfit = OutfitUtils.CreateOutfitForSim(alienDescription, key33, OutfitCategories.Everyday, OutfitCategories.Everyday, false);

                    if (outfit != null)
                    {
                        alienDescription.AddOutfit(outfit, OutfitCategories.Everyday, true);
                    }

                    outfit = OutfitUtils.CreateOutfitForSim(alienDescription, key33, OutfitCategories.Formalwear, OutfitCategories.Formalwear, false);

                    if (outfit != null)
                    {
                        alienDescription.AddOutfit(outfit, OutfitCategories.Formalwear, true);
                    }

                    outfit = OutfitUtils.CreateOutfitForSim(alienDescription, key33, OutfitCategories.Outerwear, OutfitCategories.Outerwear, false);

                    if (outfit != null)
                    {
                        alienDescription.AddOutfit(outfit, OutfitCategories.Outerwear, true);
                    }
                }
            }

            return(alienDescription);
        }
示例#36
0
 public static int ReplaceOutfit(SimDescriptionCore sim, Key key, SimBuilder builder, ulong components, bool alternate)
 {
     return ReplaceOutfit(sim, key, CreateOutfit(sim, key, builder, components, alternate), alternate);
 }
示例#37
0
文件: CASParts.cs 项目: yakoder/NRaas
 public static int ReplaceOutfit(SimDescriptionCore sim, Key key, SimBuilder builder, ulong components, bool alternate)
 {
     return(ReplaceOutfit(sim, key, CreateOutfit(sim, key, builder, components, alternate), alternate));
 }
示例#38
0
 private static void ApplyValue(SimBuilder builder, uint index, float value)
 {
     builder.mSecondaryNormalMapWeights[index] = value;
     builder.mUtils.SimBuilderSetSecondaryNormalMapWeight(builder.mHandle, index, builder.mSecondaryNormalMapWeights[index]);
 }
示例#39
0
            public void Apply(SimBuilder builder)
            {
                Color[] color = ExtractHairColor(mHairPreset);
                if (color != null)
                {
                    OutfitUtils.InjectHairColor(builder, color, BodyTypes.Hair);
                }

                color = ExtractHairColor(mBeardPreset);
                if (color != null)
                {
                    OutfitUtils.InjectHairColor(builder, color, BodyTypes.Beard);
                }

                /*
                color = ExtractEyebrowColor(mEyebrowsPreset);
                if ((color != null) && (color.Length > 0))
                {
                    OutfitUtils.InjectEyeBrowHairColor(builder, color[0]);
                }

                color = ExtractEyebrowColor(mBodyHairPreset);
                if ((color != null) && (color.Length > 0))
                {
                    OutfitUtils.InjectBodyHairColor(builder, color[0]);
                }
                */
            }
示例#40
0
            /*
            public bool ApplyAlt(SimBuilder builder, CASParts.Key key, bool applyHairColor)
            {
                return ApplyAlt(builder, key, applyHairColor, null, null);
            }
            */
            public bool ApplyAlt(SimBuilder builder, CASParts.Key key, bool applyHairColor, IEnumerable<BodyTypes> types, IEnumerable<BodyTypes> notTypes)
            {
                if (mAltOutfits == null) return false;

                SavedOutfit outfit = mAltOutfits.Load(key);
                if (outfit == null) return false;

                outfit.Apply(builder, applyHairColor, types, notTypes);
                return true;
            }
示例#41
0
 public ColorStore(SimBuilder builder)
 {
     if (builder != null)
     {
         foreach (CASPart part in builder.mCASParts.Values)
         {
             switch (part.BodyType)
             {
                 case BodyTypes.Hair:
                     mHairPreset = builder.GetDesignPresetString(part);
                     break;
                 case BodyTypes.Beard:
                     mBeardPreset = builder.GetDesignPresetString(part);
                     break;
                 case BodyTypes.Eyebrows:
                     mEyebrowsPreset = builder.GetDesignPresetString(part);
                     break;
                 default:
                     if (CASParts.BodyHairTypes.Contains(part.BodyType))
                     {
                         mBodyHairPreset = builder.GetDesignPresetString(part);
                     }
                     break;
             }
         }
     }
 }
示例#42
0
        public T Get <T>(Common.IStatGenerator stats, string name, TestDelegate <T> test, out int price)
            where T : class
        {
            List <BuildBuyProduct> choices = new List <BuildBuyProduct>(mProducts);

            RandomUtil.RandomizeListOfObjects(choices);

            stats.AddStat(name + " Total", choices.Count);

            foreach (BuildBuyProduct choice in choices)
            {
                ResourceKey key = choice.ProductResourceKey;

                Hashtable overrides = new Hashtable(0x1);

                IGameObject obj = null;

                try
                {
                    obj = GlobalFunctions.CreateObjectInternal(key, overrides, null);
                }
                catch (Exception e)
                {
                    Common.DebugException(key.ToString(), e);
                    continue;
                }

                T result = obj as T;
                if (result == null)
                {
                    stats.IncStat(name + " Mismatch " + choice.ObjectInstanceName, Common.DebugLevel.High);
                    stats.IncStat(name + " Wrong Type " + obj.GetType().Name, Common.DebugLevel.High);
                }
                else if ((test != null) && (!test(result)))
                {
                    stats.IncStat(name + " Test Fail");
                }
                else
                {
                    BuildBuyModel model = Sims3.Gameplay.UI.Responder.Instance.BuildBuyModel;

                    List <ResourceKey> presets = new List <ResourceKey>();

                    uint[] objectPresetIdList = model.GetObjectPresetIdList(obj.ObjectId);
                    for (uint i = 0; i < objectPresetIdList.Length; i++)
                    {
                        ThumbnailKey thumbnail = model.GetObjectProductThumbnailKey(obj.ObjectId, ThumbnailSize.Large);
                        if (thumbnail.mDescKey != ResourceKey.kInvalidResourceKey)
                        {
                            uint id = objectPresetIdList[i];
                            thumbnail.mDescKey.GroupId = (thumbnail.mDescKey.GroupId & 0xff000000) | (id & 0xffffff);
                            ResourceKeyContentCategory customContentTypeFromKeyAndPresetIndex = UIUtils.GetCustomContentTypeFromKeyAndPresetIndex(model.GetObjectProductKey(obj.ObjectId), i);
                            if (customContentTypeFromKeyAndPresetIndex == ResourceKeyContentCategory.kInstalled)
                            {
                                customContentTypeFromKeyAndPresetIndex = UIUtils.GetCustomContentType(model.GetObjectProductKey(obj.ObjectId));
                            }
                            string presetString = model.GetPresetString(thumbnail.mDescKey);
                            if (presetString != string.Empty)
                            {
                                KeyValuePair <string, Dictionary <string, Complate> > presetEntryFromPresetString = (KeyValuePair <string, Dictionary <string, Complate> >)SimBuilder.GetPresetEntryFromPresetString(presetString);
                                if ((presetEntryFromPresetString.Value != null) && (presetEntryFromPresetString.Value.Count > 0))
                                {
                                    presets.Add(thumbnail.mDescKey);
                                }
                            }
                        }
                    }

                    if (presets.Count > 0)
                    {
                        ResourceKey preset = RandomUtil.GetRandomObjectFromList(presets);

                        string presetString = model.GetPresetString(preset);
                        if (!string.IsNullOrEmpty(presetString))
                        {
                            object presetEntryFromPresetString = SimBuilder.GetPresetEntryFromPresetString(presetString);
                            if (presetEntryFromPresetString is KeyValuePair <string, Dictionary <string, Complate> > )
                            {
                                FinalizePresetTask.Perform(obj.ObjectId, (KeyValuePair <string, Dictionary <string, Complate> >)presetEntryFromPresetString);
                            }
                        }
                    }

                    stats.IncStat(name + " Found");

                    price = (int)choice.Price;

                    return(result);
                }

                obj.Destroy();
            }

            price = 0;
            return(null);
        }
示例#43
0
文件: Bust.cs 项目: Robobeurre/NRaas
 protected override void ApplyValue(SimBuilder builder, float value)
 {
     NormalMap.ApplyBustValue(builder, value);
 }
示例#44
0
 public static int AddOutfit(SimDescriptionCore sim, OutfitCategories category, SimBuilder builder, bool alternate)
 {
     return ReplaceOutfit(sim, new Key(category, -1), builder, alternate);
 }
示例#45
0
 public void Apply(SimBuilder builder, bool applyHairColor, IEnumerable<BodyTypes> argTypes, IEnumerable<BodyTypes> argNotTypes)
 {
     mOutfit.Apply(builder, applyHairColor, argTypes, argNotTypes);
 }
示例#46
0
 public static int ReplaceOutfit(SimDescriptionCore sim, Key key, SimBuilder builder, bool alternate)
 {
     return ReplaceOutfit(sim, key, builder, ulong.MaxValue, alternate);
 }
示例#47
0
            public OutfitBuilder(SimDescriptionCore sim, Key key, SimOutfit outfit, bool alternate)
            {
                mBuilder = new SimBuilder();

                mSim = sim;
                mKey = key;
                mAlternate = alternate;

                mOutfit = outfit;
                if (mOutfit != null)
                {
                    OutfitUtils.SetOutfit(mBuilder, mOutfit, sim);
                }
            }
示例#48
0
 public bool Apply(SimBuilder builder)
 {
     if (builder.AddPart(mPart))
     {
         if (!string.IsNullOrEmpty(mPresetString))
         {
             OutfitUtils.ApplyPresetStringToPart(builder, mPart, mPresetString);
         }
         return true;
     }
     else
     {
         return false;
     }
 }
示例#49
0
        public static bool CopyGenetics(SimDescriptionCore source, SimDescriptionCore destination, bool onlyNonZero, bool onlySliders)
        {
            SimOutfit sourceOutfit = CASParts.GetOutfit(source, CASParts.sPrimary, false);
            if (sourceOutfit == null) return false;

            SimOutfit sourceWerewolfOutfit = CASParts.GetOutfit(source, new CASParts.Key(OutfitCategories.Supernatural, 0), false);

            SimDescription sourceDesc = source as SimDescription;
            SimDescription destDesc = destination as SimDescription;

            if ((!onlySliders) && (!SimTypes.IsSkinJob(sourceDesc)) && (!SimTypes.IsSkinJob(destDesc)))
            {
                destDesc.SkinToneKey = sourceDesc.SkinToneKey;
                destDesc.SkinToneIndex = sourceDesc.SkinToneIndex;
            }

            destDesc.SecondaryNormalMapWeights = sourceDesc.SecondaryNormalMapWeights.Clone() as float[];

            using (SimBuilder sourceBuilder = new SimBuilder())
            {
                OutfitUtils.SetOutfit(sourceBuilder, sourceOutfit, source);

                using (CASParts.OutfitBuilder builder = new CASParts.OutfitBuilder(destination, CASParts.sPrimary))
                {
                    if (!builder.OutfitValid) return false;

                    if ((!onlySliders) && (destDesc != null))
                    {
                        builder.Builder.SkinTone = destDesc.SkinToneKey;
                        builder.Builder.SkinToneIndex = destDesc.SkinToneIndex;
                    }

                    foreach (FacialBlend blend in FaceBlends)
                    {
                        float amount = GetBlendAmount(sourceBuilder, blend);

                        if (onlyNonZero)
                        {
                            if (amount == 0.0) continue;
                        }

                        SetBlendAmount(builder.Builder, blend, amount);
                    }

                    foreach (FacialBlend blend in FurBlends)
                    {
                        float amount = GetBlendAmount(sourceBuilder, blend);

                        if (onlyNonZero)
                        {
                            if (amount == 0.0) continue;
                        }

                        SetBlendAmount(builder.Builder, blend, amount);
                    }

                    if (!onlySliders)
                    {
                        builder.CopyGeneticParts(sourceOutfit);
                    }
                }

                sourceBuilder.Clear();

                if ((sourceWerewolfOutfit != null) && (destDesc.IsWerewolf))
                {
                    OutfitUtils.SetOutfit(sourceBuilder, sourceWerewolfOutfit, source);

                    using (CASParts.OutfitBuilder builder = new CASParts.OutfitBuilder(destination, new CASParts.Key(OutfitCategories.Supernatural, 0)))
                    {
                        if ((!onlySliders) && (destDesc != null))
                        {
                            builder.Builder.SkinTone = destDesc.SkinToneKey;
                            builder.Builder.SkinToneIndex = destDesc.SkinToneIndex;
                        }

                        foreach (FacialBlend blend in FaceBlends)
                        {
                            float amount = GetBlendAmount(sourceBuilder, blend);

                            if (onlyNonZero)
                            {
                                if (amount == 0.0) continue;
                            }

                            SetBlendAmount(builder.Builder, blend, amount);
                        }

                        builder.Components = CASLogic.sWerewolfPreserveComponents;
                    }
                }
            }

            return true;
        }
示例#50
0
            public static void CopyGeneticParts(SimBuilder builder, SimOutfit sourceOutfit)
            {
                builder.RemoveParts(new List<BodyTypes>(CASParts.GeneticBodyTypes).ToArray());

                foreach (CASPart part in sourceOutfit.Parts)
                {
                    if (!CASParts.GeneticBodyTypes.Contains(part.BodyType)) continue;

                    if ((part.Age & builder.Age) != builder.Age) continue;

                    if ((part.Gender & builder.Gender) != builder.Gender) continue;

                    new PartPreset(part, sourceOutfit).Apply(builder);
                }

                builder.SetSecondaryNormalMapWeights(sourceOutfit.SecondaryNormalMapWeights);

                builder.FurMap = sourceOutfit.FurMap;
                builder.NumCurls = sourceOutfit.NumCurls;
                builder.CurlPixelRadius = sourceOutfit.CurlPixelRadius;
            }
示例#51
0
        public static float GetBlendAmount(SimBuilder builder, BaseBlend blend)
        {
            FacialBlend blend2 = blend as FacialBlend;
            if (blend2 != null)
            {
                return builder.GetFacialBlend(blend2.GetKey());
            }

            return 0;
        }
示例#52
0
文件: CASParts.cs 项目: yakoder/NRaas
 public static int ReplaceOutfit(SimDescriptionCore sim, Key key, SimBuilder builder, bool alternate)
 {
     return(ReplaceOutfit(sim, key, builder, ulong.MaxValue, alternate));
 }
示例#53
0
 public static float GetValue(SimBuilder builder, BlendUnit unit)
 {
     return GetValue(builder, new FacialBlendData(unit));
 }
示例#54
0
        public static float GetValue(SimBuilder builder, FacialBlendData unit)
        {
            if (unit.mBlend2 != null)
            {
                float num2 = GetBlendAmount(builder, unit.mBlend2);
                if (num2 > 0f)
                {
                    return -num2;
                }
            }

            if (unit.mBlend1 != null)
            {
                return GetBlendAmount(builder, unit.mBlend1);
            }
            return 0;
        }
示例#55
0
 protected static void SetBlendAmount(SimBuilder builder, BaseBlend blend, float value)
 {
     FacialBlend blend2 = blend as FacialBlend;
     if (blend2 != null)
     {
         builder.SetFacialBlend(blend2.GetKey(), value);
     }
 }
示例#56
0
        public static void SetFacialBlends(SimBuilder sb)
        {
            bool  flag = (sb.Gender == CASAgeGenderFlags.Female);
            float num  = flag ? Genetics.kAlienHeadWide[0] : Genetics.kAlienHeadWide[1];

            if (num != 0f)
            {
                ResourceKey key = new ResourceKey(ResourceUtils.HashString64("HeadWide"), 56144010u, 0u);
                sb.SetFacialBlend(key, num);
            }

            num = flag ? Genetics.kAlienJawChinSquare[0] : Genetics.kAlienJawChinSquare[1];

            if (num != 0f)
            {
                ResourceKey key2 = new ResourceKey(ResourceUtils.HashString64("JawChinSquare"), 56144010u, 0u);
                sb.SetFacialBlend(key2, num);
            }

            num = flag ? Genetics.kAlienNoseScaleDown[0] : Genetics.kAlienNoseScaleDown[1];

            if (num != 0f)
            {
                ResourceKey key3 = new ResourceKey(ResourceUtils.HashString64("NoseScaleDown"), 56144010u, 0u);
                sb.SetFacialBlend(key3, num);
            }

            num = flag ? Genetics.kAlienNoseDown[0] : Genetics.kAlienNoseDown[1];

            if (num != 0f)
            {
                ResourceKey key4 = new ResourceKey(ResourceUtils.HashString64("NoseDown"), 56144010u, 0u);
                sb.SetFacialBlend(key4, num);
            }

            num = flag ? Genetics.kAlienNoseThin[0] : Genetics.kAlienNoseThin[1];

            if (num != 0f)
            {
                ResourceKey key5 = new ResourceKey(ResourceUtils.HashString64("NoseThin"), 56144010u, 0u);
                sb.SetFacialBlend(key5, num);
            }

            num = flag ? Genetics.kAlienNoseBridgeRotate[0] : Genetics.kAlienNoseBridgeRotate[1];

            if (num != 0f)
            {
                ResourceKey key6 = new ResourceKey(ResourceUtils.HashString64("NoseBridgeRotate"), 56144010u, 0u);
                sb.SetFacialBlend(key6, num);
            }

            num = flag ? Genetics.kAlienNoseBridgeOut[0] : Genetics.kAlienNoseBridgeOut[1];

            if (num != 0f)
            {
                ResourceKey key7 = new ResourceKey(ResourceUtils.HashString64("NoseBridgeOut"), 56144010u, 0u);
                sb.SetFacialBlend(key7, num);
            }

            num = flag ? Genetics.kAlienNoseBridgeScaleUp[0] : Genetics.kAlienNoseBridgeScaleUp[1];

            if (num != 0f)
            {
                ResourceKey key8 = new ResourceKey(ResourceUtils.HashString64("NoseBridgeScaleUp"), 56144010u, 0u);
                sb.SetFacialBlend(key8, num);
            }

            num = flag ? Genetics.kAlienNoseNostrilsUp[0] : Genetics.kAlienNoseNostrilsUp[1];

            if (num != 0f)
            {
                ResourceKey key9 = new ResourceKey(ResourceUtils.HashString64("NoseNostrilsUp"), 56144010u, 0u);
                sb.SetFacialBlend(key9, num);
            }

            num = flag ? Genetics.kAlienNoseNostrilScale[0] : Genetics.kAlienNoseNostrilScale[1];

            if (num != 0f)
            {
                ResourceKey key10 = new ResourceKey(ResourceUtils.HashString64("NoseNostrilScale"), 56144010u, 0u);
                sb.SetFacialBlend(key10, num);
            }

            num = flag ? Genetics.kAlienNoseTipScaleDown[0] : Genetics.kAlienNoseTipScaleDown[1];

            if (num != 0f)
            {
                ResourceKey key11 = new ResourceKey(ResourceUtils.HashString64("NoseTipScaleDown"), 56144010u, 0u);
                sb.SetFacialBlend(key11, num);
            }

            num = flag ? Genetics.kAlienEyesBrowCurve[0] : Genetics.kAlienEyesBrowCurve[1];

            if (num != 0f)
            {
                ResourceKey key12 = new ResourceKey(ResourceUtils.HashString64("EyesBrowCurve"), 56144010u, 0u);
                sb.SetFacialBlend(key12, num);
            }

            num = flag ? Genetics.kAlienEyesBrowRotate[0] : Genetics.kAlienEyesBrowRotate[1];

            if (num != 0f)
            {
                ResourceKey key13 = new ResourceKey(ResourceUtils.HashString64("EyesBrowRotate"), 56144010u, 0u);
                sb.SetFacialBlend(key13, num);
            }

            num = flag ? Genetics.kAlienMouthLipUpperDefinition[0] : Genetics.kAlienMouthLipUpperDefinition[1];

            if (num != 0f)
            {
                ResourceKey key14 = new ResourceKey(ResourceUtils.HashString64("MouthLipUpperDefinition"), 56144010u, 0u);
                sb.SetFacialBlend(key14, num);
            }

            num = flag ? Genetics.kAlienMouthCurveDown[0] : Genetics.kAlienMouthCurveDown[1];

            if (num != 0f)
            {
                ResourceKey key15 = new ResourceKey(ResourceUtils.HashString64("MouthCurveDown"), 56144010u, 0u);
                sb.SetFacialBlend(key15, num);
            }

            num = flag ? Genetics.kAlienMouthIn[0] : Genetics.kAlienMouthIn[1];

            if (num != 0f)
            {
                ResourceKey key16 = new ResourceKey(ResourceUtils.HashString64("MouthIn"), 56144010u, 0u);
                sb.SetFacialBlend(key16, num);
            }

            num = flag ? Genetics.kAlienTranslateMouthDown[0] : Genetics.kAlienTranslateMouthDown[1];

            if (num != 0f)
            {
                ResourceKey key17 = new ResourceKey(ResourceUtils.HashString64("TranslateMouthDown"), 56144010u, 0u);
                sb.SetFacialBlend(key17, num);
            }

            num = flag ? Genetics.kAlienMouthThin[0] : Genetics.kAlienMouthThin[1];

            if (num != 0f)
            {
                ResourceKey key18 = new ResourceKey(ResourceUtils.HashString64("MouthThin"), 56144010u, 0u);
                sb.SetFacialBlend(key18, num);
            }

            num = flag ? Genetics.kAlienEyeAlienCorrector[0] : Genetics.kAlienEyeAlienCorrector[1];

            if (num != 0f)
            {
                ResourceKey key19 = new ResourceKey(ResourceUtils.HashString64("EyeAlienCorrector"), 56144010u, 0u);
                sb.SetFacialBlend(key19, num);
            }

            num = flag ? Genetics.kAlienEyeAlien[0] : Genetics.kAlienEyeAlien[1];

            if (num != 0f)
            {
                ResourceKey key20 = new ResourceKey(ResourceUtils.HashString64("EyeAlien"), 56144010u, 0u);
                sb.SetFacialBlend(key20, num);
            }

            num = flag ? Genetics.kAlienJawChinDown[0] : Genetics.kAlienJawChinDown[1];

            if (num != 0f)
            {
                ResourceKey key21 = new ResourceKey(ResourceUtils.HashString64("JawChinDown"), 56144010u, 0u);
                sb.SetFacialBlend(key21, num);
            }

            num = flag ? Genetics.kAlienJawChinScaleDown[0] : Genetics.kAlienJawChinScaleDown[1];

            if (num != 0f)
            {
                ResourceKey key22 = new ResourceKey(ResourceUtils.HashString64("JawChinScaleDown"), 56144010u, 0u);
                sb.SetFacialBlend(key22, num);
            }

            num = flag ? Genetics.kAlienJawThin[0] : Genetics.kAlienJawThin[1];

            if (num != 0f)
            {
                ResourceKey key23 = new ResourceKey(ResourceUtils.HashString64("JawThin"), 56144010u, 0u);
                sb.SetFacialBlend(key23, num);
            }

            num = flag ? Genetics.kAlienJawCheeksIn[0] : Genetics.kAlienJawCheeksIn[1];

            if (num != 0f)
            {
                ResourceKey key24 = new ResourceKey(ResourceUtils.HashString64("JawCheeksIn"), 56144010u, 0u);
                sb.SetFacialBlend(key24, num);
            }

            num = flag ? Genetics.kAlienJawCheekSharpness[0] : Genetics.kAlienJawCheekSharpness[1];

            if (num != 0f)
            {
                ResourceKey key25 = new ResourceKey(ResourceUtils.HashString64("JawCheekSharpness"), 56144010u, 0u);
                sb.SetFacialBlend(key25, num);
            }

            num = flag ? Genetics.kAlienEarsRotateY[0] : Genetics.kAlienEarsRotateY[1];

            if (num != 0f)
            {
                ResourceKey key26 = new ResourceKey(ResourceUtils.HashString64("EarsRotateY"), 56144010u, 0u);
                sb.SetFacialBlend(key26, num);
            }

            num = flag ? Genetics.kAlienEarPoint[0] : Genetics.kAlienEarPoint[1];

            if (num != 0f)
            {
                ResourceKey key27 = new ResourceKey(ResourceUtils.HashString64("EarPoint"), 56144010u, 0u);
                sb.SetFacialBlend(key27, num);
            }

            num = flag ? Genetics.kAlienHeadProfileOut[0] : Genetics.kAlienHeadProfileOut[1];

            if (num != 0f)
            {
                ResourceKey key28 = new ResourceKey(ResourceUtils.HashString64("HeadProfileOut"), 56144010u, 0u);
                sb.SetFacialBlend(key28, num);
            }

            num = flag ? Genetics.kAlienEyesLashesThin[0] : Genetics.kAlienEyesLashesThin[1];

            if (num != 0f)
            {
                ResourceKey key29 = new ResourceKey(ResourceUtils.HashString64("EyesLashesThin"), 56144010u, 0u);
                sb.SetFacialBlend(key29, num);
            }

            num = flag ? Genetics.kAlienJawCheeksBoneDown[0] : Genetics.kAlienJawCheeksBoneDown[1];

            if (num != 0f)
            {
                ResourceKey key30 = new ResourceKey(ResourceUtils.HashString64("JawCheeksBoneDown"), 56144010u, 0u);
                sb.SetFacialBlend(key30, num);
            }

            num = flag ? Genetics.kAlienJawChinRound[0] : Genetics.kAlienJawChinRound[1];

            if (num != 0f)
            {
                ResourceKey key31 = new ResourceKey(ResourceUtils.HashString64("JawChinRound"), 56144010u, 0u);
                sb.SetFacialBlend(key31, num);
            }

            num = flag ? Genetics.kAlienNoseTipDepthIn[0] : Genetics.kAlienNoseTipDepthIn[1];

            if (num != 0f)
            {
                ResourceKey key32 = new ResourceKey(ResourceUtils.HashString64("NoseTipDepthIn"), 56144010u, 0u);
                sb.SetFacialBlend(key32, num);
            }
        }
示例#57
0
 public static void SetValue(SimBuilder builder, BlendUnit unit, float value)
 {
     SetValue(builder, new FacialBlendData(unit), value);
 }
示例#58
0
 public static void MakeupManagement(Sim sim, bool addRemove)
 {
     try
     {
         SimBuilder       builder               = new SimBuilder();
         SimDescription   simDescription        = sim.SimDescription;
         OutfitCategories currentOutfitCategory = sim.CurrentOutfitCategory;
         int currentOutfitIndex = sim.CurrentOutfitIndex;
         builder.Clear(false);
         SimOutfit currentOutfit = sim.CurrentOutfit;
         OutfitUtils.SetOutfit(builder, currentOutfit, simDescription);
         if (addRemove)
         {
             sendDebugMsg(sim.FullName + "\nAdding eyes.");
             string designPreset = CASUtils.PartDataGetPreset(VTThirstMaskPart, uint.Parse(kMaskPresetIndex));
             builder.AddPart(ThirstMask);
             if (sim.SimDescription.YoungAdultOrAbove)
             {
                 sim.BuffManager.AddElement(0xB110CC43B0C44B1C, (Origin)ResourceUtils.HashString64("ByAppearanceOfRedEyes"));
             }
             CASUtils.ApplyPresetToPart(builder, ThirstMask, designPreset);
             builder.SetPartPreset(VTThirstMaskPart, uint.Parse(kMaskPresetIndex), designPreset);
         }
         else
         {
             builder.RemovePart(ThirstMask);
             sim.BuffManager.RemoveElement(0xB110CC43B0C44B1C);
         }
         SimOutfit outfit = new SimOutfit(builder.CacheOutfit(simDescription.FullName + currentOutfitCategory.ToString() + currentOutfitIndex.ToString()));
         if (simDescription.GetOutfitCount(currentOutfitCategory) > currentOutfitIndex)
         {
             simDescription.RemoveOutfit(currentOutfitCategory, currentOutfitIndex, true);
         }
         simDescription.AddOutfit(outfit, currentOutfitCategory, currentOutfitIndex);
         if (simDescription.CreatedSim != null)
         {
             sendDebugMsg("Updated: " + currentOutfitCategory.ToString() + "-" + currentOutfitIndex.ToString());
             simDescription.CreatedSim.RefreshCurrentOutfit(false);
         }
         foreach (OutfitCategories categories2 in Enum.GetValues(typeof(OutfitCategories)))
         {
             if (categories2 != OutfitCategories.Special)
             {
                 ArrayList list = simDescription.GetCurrentOutfits()[categories2] as ArrayList;
                 if (list != null)
                 {
                     int count = list.Count;
                     for (int i = 0; i < count; i++)
                     {
                         if ((categories2 != currentOutfitCategory) || (i != currentOutfitIndex))
                         {
                             builder.Clear(false);
                             SimOutfit outfit3 = list[i] as SimOutfit;
                             OutfitUtils.SetOutfit(builder, outfit3, simDescription);
                             if (addRemove)
                             {
                                 string str2 = CASUtils.PartDataGetPreset(VTThirstMaskPart, uint.Parse(kMaskPresetIndex));
                                 builder.AddPart(ThirstMask);
                                 sim.BuffManager.AddElement(0xB110CC43B0C44B1C, (Origin)ResourceUtils.HashString64("ByAppearanceOfRedEyes"));
                                 CASUtils.ApplyPresetToPart(builder, ThirstMask, str2);
                                 builder.SetPartPreset(VTThirstMaskPart, uint.Parse(kMaskPresetIndex), str2);
                             }
                             else
                             {
                                 builder.RemovePart(ThirstMask);
                                 sim.BuffManager.RemoveElement(0xB110CC43B0C44B1C);
                             }
                             SimOutfit outfit4 = new SimOutfit(builder.CacheOutfit(simDescription.FullName + categories2.ToString() + i.ToString()));
                             if (simDescription.GetOutfitCount(categories2) > i)
                             {
                                 simDescription.RemoveOutfit(categories2, i, true);
                             }
                             simDescription.AddOutfit(outfit4, categories2, i);
                             sendDebugMsg("Updated: " + categories2.ToString() + "-" + i.ToString());
                             Sleep(0);
                         }
                     }
                 }
             }
         }
         SimOutfit outfit5 = simDescription.GetOutfit(OutfitCategories.Everyday, 0);
         if (outfit5 != null)
         {
             ThumbnailManager.GenerateHouseholdSimThumbnail(outfit5.Key, outfit5.Key.InstanceId, 0, ThumbnailSizeMask.Large | ThumbnailSizeMask.ExtraLarge | ThumbnailSizeMask.Medium | ThumbnailSizeMask.Small, ThumbnailTechnique.Default, true, false, simDescription.AgeGenderSpecies);
         }
     }
     catch (Exception exception)
     {
         SimpleMessageDialog.Show("Vampire Tweaker - Thirst Effect", sim.Name + "\nApply makeup failed!\n" + exception);
     }
 }
示例#59
0
 protected override float GetValue(SimBuilder builder)
 {
     return builder.GetSecondaryNormalMapWeights()[0];
 }