Exemple #1
0
        private void ChangeHueForAnimations(double hue, double saturation, double lightness, Type0.Parameter parameter)
        {
            Type0 r = Type0.FirstOrDefault(e => e.I_01_a == ECF.Type0.Component.R && e.I_00 == parameter);
            Type0 g = Type0.FirstOrDefault(e => e.I_01_a == ECF.Type0.Component.G && e.I_00 == parameter);
            Type0 b = Type0.FirstOrDefault(e => e.I_01_a == ECF.Type0.Component.B && e.I_00 == parameter);

            if (r == null || g == null || b == null)
            {
                return;
            }

            foreach (var r_frame in r.Keyframes)
            {
                float g_frame = g.GetValue(r_frame.Index);
                float b_frame = b.GetValue(r_frame.Index);

                if (r_frame.Float != 0.0 || g_frame != 0.0 || b_frame != 0.0)
                {
                    HslColor.HslColor color = new RgbColor(r_frame.Float, g_frame, b_frame).ToHsl();
                    color.ChangeHue(hue);
                    color.ChangeSaturation(saturation);
                    color.ChangeLightness(lightness);
                    RgbColor convertedColor = color.ToRgb();

                    r_frame.Float = (float)convertedColor.R;
                    g.SetValue(r_frame.Index, (float)convertedColor.G);
                    b.SetValue(r_frame.Index, (float)convertedColor.B);
                }
            }
        }
Exemple #2
0
        public void AddKeyframesFromAnim(Type0 anim)
        {
            foreach (var keyframe in anim.Keyframes)
            {
                var existing = GetKeyframe(keyframe.Index);

                if (existing == null)
                {
                    var newKeyframe = new Type0_Keyframe()
                    {
                        Index = keyframe.Index, Float = GetValue(keyframe.Index)
                    };
                    Keyframes.Add(newKeyframe);
                }
            }
        }
Exemple #3
0
        private void Parse()
        {
            ecfFile.I_12 = BitConverter.ToUInt16(rawBytes, 12);



            if (totalMainEntries > 0)
            {
                ecfFile.Entries = new List <ECF_Entry>();

                for (int i = 0; i < totalMainEntries; i++)
                {
                    ecfFile.Entries.Add(new ECF_Entry());

                    ecfFile.Entries[i].I_52 = (PlayMode)BitConverter.ToInt16(rawBytes, mainEntryOffset + 52);
                    ecfFile.Entries[i].F_00 = BitConverter.ToSingle(rawBytes, mainEntryOffset + 0);
                    ecfFile.Entries[i].F_04 = BitConverter.ToSingle(rawBytes, mainEntryOffset + 4);
                    ecfFile.Entries[i].F_08 = BitConverter.ToSingle(rawBytes, mainEntryOffset + 8);
                    ecfFile.Entries[i].F_12 = BitConverter.ToSingle(rawBytes, mainEntryOffset + 12);
                    ecfFile.Entries[i].F_16 = BitConverter.ToSingle(rawBytes, mainEntryOffset + 16);
                    ecfFile.Entries[i].F_20 = BitConverter.ToSingle(rawBytes, mainEntryOffset + 20);
                    ecfFile.Entries[i].F_24 = BitConverter.ToSingle(rawBytes, mainEntryOffset + 24);
                    ecfFile.Entries[i].F_28 = BitConverter.ToSingle(rawBytes, mainEntryOffset + 28);
                    ecfFile.Entries[i].F_32 = BitConverter.ToSingle(rawBytes, mainEntryOffset + 32);
                    ecfFile.Entries[i].F_36 = BitConverter.ToSingle(rawBytes, mainEntryOffset + 36);
                    ecfFile.Entries[i].F_40 = BitConverter.ToSingle(rawBytes, mainEntryOffset + 40);
                    ecfFile.Entries[i].F_44 = BitConverter.ToSingle(rawBytes, mainEntryOffset + 44);
                    ecfFile.Entries[i].F_48 = BitConverter.ToSingle(rawBytes, mainEntryOffset + 48);
                    ecfFile.Entries[i].I_54 = BitConverter.ToUInt16(rawBytes, mainEntryOffset + 54);
                    ecfFile.Entries[i].I_56 = BitConverter.ToUInt16(rawBytes, mainEntryOffset + 56);
                    ecfFile.Entries[i].I_58 = BitConverter.ToUInt16(rawBytes, mainEntryOffset + 58);
                    ecfFile.Entries[i].I_60 = BitConverter.ToUInt16(rawBytes, mainEntryOffset + 60);
                    ecfFile.Entries[i].I_62 = BitConverter.ToUInt16(rawBytes, mainEntryOffset + 62);
                    ecfFile.Entries[i].I_64 = new UInt16[14];

                    for (int a = 0; a < 28; a += 2)
                    {
                        ecfFile.Entries[i].I_64[a / 2] = BitConverter.ToUInt16(rawBytes, mainEntryOffset + 64 + a);
                    }

                    ecfFile.Entries[i].I_96 = BitConverter.ToUInt16(rawBytes, mainEntryOffset + 96);

                    //Type0 data
                    int Type0_Offset = BitConverter.ToInt32(rawBytes, mainEntryOffset + 100) + 96 + mainEntryOffset;
                    int Type0_Count  = BitConverter.ToInt16(rawBytes, mainEntryOffset + 98);

                    if (Type0_Count > 0)
                    {
                        ecfFile.Entries[i].Type0 = new List <Type0>();

                        for (int a = 0; a < Type0_Count; a++)
                        {
                            int startOffset = BitConverter.ToInt32(rawBytes, Type0_Offset + 8) + Type0_Offset;
                            int floatOffset = BitConverter.ToInt32(rawBytes, Type0_Offset + 12) + Type0_Offset;

                            ecfFile.Entries[i].Type0.Add(new Type0()
                            {
                                I_00      = (ECF.Type0.Parameter)rawBytes[Type0_Offset + 0],
                                I_01_a    = Type0.GetComponent((ECF.Type0.Parameter)rawBytes[Type0_Offset + 0], Int4Converter.ToInt4(rawBytes[Type0_Offset + 1])[0]),
                                I_01_b    = BitConverter_Ex.ToBoolean(Int4Converter.ToInt4(rawBytes[Type0_Offset + 1])[1]),
                                I_02      = (rawBytes[Type0_Offset + 2] == 0)? false : true,
                                I_03      = rawBytes[Type0_Offset + 3],
                                I_04      = BitConverter.ToUInt16(rawBytes, Type0_Offset + 4),
                                Keyframes = ParseKeyframes(BitConverter.ToInt16(rawBytes, Type0_Offset + 6), startOffset, floatOffset)
                            });


                            Type0_Offset += 16;
                        }
                    }

                    //Unk_Str
                    int Str_Offset = BitConverter.ToInt32(rawBytes, mainEntryOffset + 92) + mainEntryOffset;

                    if (Str_Offset != 0)
                    {
                        ecfFile.Entries[i].Unk_Str = Utils.GetString(bytes, Str_Offset);
                    }
                    else
                    {
                        ecfFile.Entries[i].Unk_Str = String.Empty;
                    }

                    mainEntryOffset += 104;
                }
            }
        }