Пример #1
0
        public static BvhJoint Parse(BvhData data)
        {
            var rt = new BvhJoint
            {
                baseData = data,
                Kind = (BvhKind)Enum.Parse(typeof(BvhKind), data.Name, true),
                Name = data.Values.First(),
                Offset = data.Child("OFFSET").Values.Select(_ => float.Parse(_)).ToArray(),
                Channels = data.Child("CHANNELS").Values.Skip(1).Select(_ => (BvhChannel)Enum.Parse(typeof(BvhChannel), _, true)).ToArray(),
            };

            foreach (var i in data.Children)
                if (i.Name == "JOINT" || i.Name == "End")
                    rt.Children.Add(Parse(i));

            return rt;
        }
Пример #2
0
        public static BvhJoint Parse(BvhData data)
        {
            var rt = new BvhJoint
            {
                baseData = data,
                Kind     = (BvhKind)Enum.Parse(typeof(BvhKind), data.Name, true),
                Name     = data.Values.First(),
                Offset   = data.Child("OFFSET").Values.Select(_ => float.Parse(_)).ToArray(),
                Channels = data.Child("CHANNELS").Values.Skip(1).Select(_ => (BvhChannel)Enum.Parse(typeof(BvhChannel), _, true)).ToArray(),
            };

            foreach (var i in data.Children)
            {
                if (i.Name == "JOINT" || i.Name == "End")
                {
                    rt.Children.Add(Parse(i));
                }
            }

            return(rt);
        }
Пример #3
0
        public BvhData ToData()
        {
            baseData      = baseData ?? new BvhData();
            baseData.Name = this.Kind == BvhKind.End ? "End" : this.Kind.ToString().ToUpper();
            baseData.SetValues(this.Name);
            baseData.Child("OFFSET").SetValues(this.Offset.Select(_ => _.ToString("0.00")));

            if (this.Channels.Any())
            {
                baseData.Child("CHANNELS").SetValues(new[] { this.Channels.Length.ToString() }.Concat(this.Channels.Select(_ => _.ToString()).Select(_ => _.Substring(0, 1).ToUpper() + _.Substring(1).ToLower())));
            }
            else
            {
                baseData.RemoveChildren("CHANNELS");
            }

            baseData.RemoveChildren("JOINT");
            baseData.RemoveChildren("End");
            baseData.Children.AddRange(this.Children.Select(_ => _.ToData()));

            return(baseData);
        }
Пример #4
0
        public BvhData ToData()
        {
            baseData = baseData ?? new BvhData();
            baseData.Name = this.Kind == BvhKind.End ? "End" : this.Kind.ToString().ToUpper();
            baseData.SetValues(this.Name);
            baseData.Child("OFFSET").SetValues(this.Offset.Select(_ => _.ToString("0.00")));

            if (this.Channels.Any())
                baseData.Child("CHANNELS").SetValues(new[] { this.Channels.Length.ToString() }.Concat(this.Channels.Select(_ => _.ToString()).Select(_ => _.Substring(0, 1).ToUpper() + _.Substring(1).ToLower())));
            else
                baseData.RemoveChildren("CHANNELS");

            baseData.RemoveChildren("JOINT");
            baseData.RemoveChildren("End");
            baseData.Children.AddRange(this.Children.Select(_ => _.ToData()));

            return baseData;
        }