Exemple #1
0
        private static AnimTrack ParseAnimTrack(JsonReader reader, AnimationNode group, STInterpoaltionType type)
        {
            string effect = reader.ReadAsString();

            AnimTrack track = new AnimTrack(group);

            track.ValueIdx          = group.ValueIndex;
            track.TrackMode         = group.Mode;
            track.TrackEffect       = ParseEffect(group.Mode, effect);
            track.InterpolationType = type;
            track.KeyFrames         = new List <STKeyFrame>();
            track.Unknown           = 0;
            reader.Read();
            track.KeyFrames = ParseKeyFrames(reader, type);
            return(track);
        }
Exemple #2
0
            public HSFMotionTrackText(AnimTrack track)
            {
                Effect        = track.TrackEffect;
                UnknownValue  = track.Unknown;
                ConstantValue = track.Constant;
                Interpolation = track.InterpolationType;

                if (track.InterpolationType == STInterpoaltionType.Constant)
                {
                    ConstantFlags = track.ConstantUnk;
                }

                foreach (var key in track.KeyFrames)
                {
                    switch (track.InterpolationType)
                    {
                    case STInterpoaltionType.Bezier:
                        KeyFrames.Add(new HSFMotionBeizerKeyFrameText()
                        {
                            Value    = key.Value,
                            Frame    = key.Frame,
                            SlopeIn  = ((STBezierKeyFrame)key).SlopeIn,
                            SlopeOut = ((STBezierKeyFrame)key).SlopeOut,
                        });
                        break;

                    default:
                        KeyFrames.Add(new HSFMotionKeyFrameText()
                        {
                            Value = key.Value,
                            Frame = key.Frame,
                        });
                        break;
                    }
                }
            }
Exemple #3
0
        private static HSFMotionAnimation TextConverter(string text)
        {
            HSFMotionAnimation anim = new HSFMotionAnimation();

            StringReader sr = new StringReader(text);

            using (JsonReader reader = new JsonTextReader(sr))
            {
                AnimationNode group = null;
                while (reader.Read())
                {
                    if (reader.Value == null)
                    {
                        continue;
                    }

                    if (reader.Value.Equals("Name"))
                    {
                        anim.Name = reader.ReadAsString();
                    }
                    else if (reader.Value.Equals("FrameCount"))
                    {
                        anim.FrameCount = (float)reader.ReadAsDecimal();
                    }
                    else if (reader.Value.Equals("Group"))
                    {
                        group = new AnimationNode();
                        anim.AnimGroups.Add(group);

                        string name = reader.ReadAsString();
                        reader.Read();                                  //ID
                        group.ValueIndex = (short)reader.ReadAsInt32(); //index
                        reader.Read();                                  //mode
                        group.Mode = (TrackMode)reader.ReadAsInt32();

                        if (group.Mode == TrackMode.Normal || group.Mode == TrackMode.Object)
                        {
                            group.Name = name;
                        }
                        else
                        {
                            group.Name = "";
                        }
                    }
                    else if (reader.Value.Equals("Track_Constant"))
                    {
                        string effect = reader.ReadAsString();
                        reader.Read(); //Value
                        float value = (float)reader.ReadAsDecimal();
                        reader.Read(); //Flags
                        string flags = reader.ReadAsString().Replace("0x", string.Empty);

                        AnimTrack track = new AnimTrack(group);
                        track.ValueIdx          = group.ValueIndex;
                        track.TrackMode         = group.Mode;
                        track.TrackEffect       = ParseEffect(group.Mode, effect);
                        track.Constant          = value;
                        track.ConstantUnk       = short.Parse(flags, System.Globalization.NumberStyles.HexNumber);
                        track.InterpolationType = STInterpoaltionType.Constant;
                        track.KeyFrames         = new List <STKeyFrame>();
                        track.Unknown           = 0;
                        group.TrackList.Add(track);
                    }
                    else if (reader.Value.Equals("Track_Bezier"))
                    {
                        group.TrackList.Add(ParseAnimTrack(reader, group, STInterpoaltionType.Bezier));
                    }
                    else if (reader.Value.Equals("Track_Linear"))
                    {
                        group.TrackList.Add(ParseAnimTrack(reader, group, STInterpoaltionType.Linear));
                    }
                    else if (reader.Value.Equals("Track_Bezier"))
                    {
                        group.TrackList.Add(ParseAnimTrack(reader, group, STInterpoaltionType.Bezier));
                    }
                    else if (reader.Value.Equals("Track_Bitmap"))
                    {
                        group.TrackList.Add(ParseAnimTrack(reader, group, STInterpoaltionType.Bitmap));
                    }
                    else if (reader.Value.Equals("Track_Step"))
                    {
                        group.TrackList.Add(ParseAnimTrack(reader, group, STInterpoaltionType.Step));
                    }
                }
            }

            return(anim);
        }