Exemplo n.º 1
0
        private void parseFace(BinaryReader br)
        {
            int num = br.ReadInt32();

            Log.Debug("VMD", "Face num: " + num.ToString());

            if (num > 0)
            {
                // initialize face hash
                var mh = new Dictionary <string, List <Morphing> > ();
                Morph = new Dictionary <string, List <Morphing> >();

                // parser
                for (int i = 0; i < num; i++)
                {
                    var m = new Morphing();

                    string name = Util.ReadString(br, 15);
                    m.frame_no = br.ReadInt32();
                    m.weight   = br.ReadSingle();

                    List <Morphing> fi;
                    if (mh.ContainsKey(name))
                    {
                        fi = mh[name];
                    }
                    else
                    {
                        fi = new List <Morphing>();

                        // default face
                        var d = new Morphing();
                        d.frame_no = -1;
                        d.weight   = 0;
                        fi.Add(d);

                        mh[name] = fi;
                    }
                    fi.Add(m);
                }

                // sorted by frame_no
                foreach (var i in mh)
                {
                    Morph[i.Key] = new List <Morphing>(from x in i.Value orderby x.frame_no select x);
                }
            }
            else
            {
                Morph = null;
            }
        }
Exemplo n.º 2
0
        private void parseFace(BinaryReader br)
        {
            int num = br.ReadInt32();
            Log.Debug("VMD", "Face num: " + num.ToString());

            if (num > 0) {
                // initialize face hash
                var mh = new Dictionary<string, List<Morphing> > ();
                Morph = new Dictionary<string, List<Morphing> >();

                // parser
                for (int i = 0; i < num; i++) {
                    var m = new Morphing();

                    string name = Util.ReadString(br, 15);
                    m.frame_no = br.ReadInt32();
                    m.weight = br.ReadSingle();

                    List<Morphing> fi;
                    if(mh.ContainsKey(name)) {
                        fi = mh[name];
                    } else {
                        fi = new List<Morphing>();

                        // default face
                        var d = new Morphing();
                        d.frame_no = -1;
                        d.weight = 0;
                        fi.Add(d);

                        mh[name] = fi;
                    }
                    fi.Add(m);
                }

                // sorted by frame_no
                foreach (var i in mh) {
                    Morph[i.Key] = new List<Morphing>(from x in i.Value orderby x.frame_no select x);
                }

            } else {
                Morph = null;
            }
        }