Exemple #1
0
        public string ToText(KEY_Parser header)
        {
            StringBuilder sb = new StringBuilder();

            using (var writer = new StringWriter(sb)) {
                writer.WriteLine($"FrameCount: {header.FrameCount}");
                writer.WriteLine($"FrameDelay: {header.AnimationDelay}");
                writer.WriteLine($"Flags: {header.Flags}");
                for (int i = 0; i < Header.AnimJoints.Length; i++)
                {
                    var joint = Header.AnimJoints[i];
                    writer.WriteLine($"- Joint: {i}");
                    WriteGroupText(writer, joint.ScaleX, "Scale X");
                    WriteGroupText(writer, joint.ScaleY, "Scale Y");
                    WriteGroupText(writer, joint.ScaleZ, "Scale Z");
                    WriteGroupText(writer, joint.RotateX, "Rotate X");
                    WriteGroupText(writer, joint.RotateY, "Rotate Y");
                    WriteGroupText(writer, joint.RotateZ, "Rotate Z");
                    WriteGroupText(writer, joint.PositionX, "Position X");
                    WriteGroupText(writer, joint.PositionY, "Position Y");
                    WriteGroupText(writer, joint.PositionZ, "Position Z");
                }
            }
            return(sb.ToString());
        }
Exemple #2
0
        public void Load(Stream stream)
        {
            Header    = new KEY_Parser(stream);
            this.Name = FileInfo.FileName;
            this.Loop = Header.Flags == 2;

            FrameRate  = 30.0f;
            FrameCount = Header.FrameCount;
            Name       = FileInfo.FileName;
            foreach (var joinAnim in Header.AnimJoints)
            {
                STAnimGroup group = new AnimGroup(joinAnim);
                AnimGroups.Add(group);
            }
        }
Exemple #3
0
        public KEY_Parser FromText(string text)
        {
            KEY_Parser parser = new KEY_Parser();
            List <KEY_Parser.AnimJoint> joints = new List <KEY_Parser.AnimJoint>();

            KEY_Parser.AnimJoint activeJoint = null;
            KEY_Parser.Group     activeGroup = null;

            foreach (var line in text.Split('\n'))
            {
                if (line.Contains("FrameCount:"))
                {
                    parser.FrameCount = ushort.Parse(line.Split(':')[1]);
                }
                if (line.Contains("FrameDelay:"))
                {
                    parser.AnimationDelay = ushort.Parse(line.Split(':')[1]);
                }
                if (line.Contains("Flags:"))
                {
                    parser.Flags = uint.Parse(line.Split(':')[1]);
                }
                if (line.Contains("Joint:"))
                {
                    activeJoint = new KEY_Parser.AnimJoint();
                    joints.Add(activeJoint);
                }

                if (line.Contains("Scale X:"))
                {
                    activeGroup        = new KEY_Parser.Group();
                    activeJoint.ScaleX = activeGroup;
                }
                if (line.Contains("Scale Y:"))
                {
                    activeGroup        = new KEY_Parser.Group();
                    activeJoint.ScaleY = activeGroup;
                }
                if (line.Contains("Scale Z:"))
                {
                    activeGroup        = new KEY_Parser.Group();
                    activeJoint.ScaleZ = activeGroup;
                }

                if (line.Contains("Position X:"))
                {
                    activeGroup           = new KEY_Parser.Group();
                    activeJoint.PositionX = activeGroup;
                }
                if (line.Contains("Position Y:"))
                {
                    activeGroup           = new KEY_Parser.Group();
                    activeJoint.PositionY = activeGroup;
                }
                if (line.Contains("Position Z:"))
                {
                    activeGroup           = new KEY_Parser.Group();
                    activeJoint.PositionZ = activeGroup;
                }

                if (line.Contains("Rotate X:"))
                {
                    activeGroup         = new KEY_Parser.Group();
                    activeJoint.RotateX = activeGroup;
                }
                if (line.Contains("Rotate Y:"))
                {
                    activeGroup         = new KEY_Parser.Group();
                    activeJoint.RotateY = activeGroup;
                }
                if (line.Contains("Rotate Z:"))
                {
                    activeGroup         = new KEY_Parser.Group();
                    activeJoint.RotateZ = activeGroup;
                }

                if (line.Contains("Frame:"))
                {
                    //Get values from array
                    string value = line.Split('[')[1];
                    value = value.Replace("[", string.Empty);
                    value = value.Replace("]", string.Empty);

                    // Console.WriteLine($"value {value}");

                    //Get multiple values in the array
                    string[] values = value.Split(',');

                    KEY_Parser.KeyFrame keyFrame = new KEY_Parser.KeyFrame();
                    for (int i = 0; i < values.Length; i++)
                    {
                        if (i == 0)
                        {
                            keyFrame.Frame = float.Parse(values[i]);
                            continue;
                        }

                        string val = values[i].Split(':')[1].Replace(" ", string.Empty);
                        if (i == 1)
                        {
                            keyFrame.Value = float.Parse(val);
                        }
                        if (i == 2)
                        {
                            keyFrame.InSlope = float.Parse(val);
                        }
                        if (i == 3)
                        {
                            keyFrame.OutSlope = float.Parse(val);
                        }
                    }

                    activeGroup.KeyFrames.Add(keyFrame);
                    activeGroup.FrameCount = (ushort)activeGroup.KeyFrames.Count;
                }
            }

            parser.AnimJoints = joints.ToArray();

            return(parser);
        }