コード例 #1
0
        public override void ReadData(BinaryReader stream, IDictionary <object, object> userdata, int totalSize)
        {
            Positions  = ReadStructArray <Vector4>(stream);
            UnusedVec3 = ReadStructArray <Vector4>(stream);
            Vertices   = ReadStructArray <Vertex>(stream);
            Faces      = ReadStructArray <Face>(stream);
            int num = stream.ReadInt32();

            MorphFrames.Clear();
            MorphFrames.Capacity = num;
            for (int i = 0; i < num; i++)
            {
                var frame = new VertexFrame();
                frame.Time = stream.ReadInt32();
                MorphFrames.Add(frame);
            }

            for (int i = 0; i < num; i++)
            {
                var frame = MorphFrames[i];
                frame.Positions = ReadStructArray <Vector4>(stream);
                frame.Normals   = ReadStructArray <Vector4>(stream);
            }
            Bones = ReadStructArray <Bone>(stream);
            FaceSmoothingGroupMasks = ReadStructArray <int>(stream);
        }
コード例 #2
0
        /// <summary>
        /// VMDを読み込む
        /// </summary>
        /// <returns>EndOfStreamExceptionが発生した場合 true を返す</returns>
        public bool Read(BinaryReader reader)
        {
            try
            {
                byte[] bChar = reader.ReadBytes(HEADER_LENGTH);
                header = new string(Encoding.GetChars(bChar));
                int eosPos = header.IndexOf('\0');
                if (eosPos >= 0)
                {
                    header = header.Remove(eosPos);
                }

                bChar     = reader.ReadBytes(MODEL_NAME_LENGTH);
                ModelName = new string(Encoding.GetChars(bChar));
                eosPos    = ModelName.IndexOf('\0');
                if (eosPos >= 0)
                {
                    ModelName = ModelName.Remove(eosPos);
                }

                uint len = reader.ReadUInt32();
                for (int i = 0; i < len; i++)
                {
                    MotionFrames.Add(new VmdMotionFrameData(reader));
                }

                len = reader.ReadUInt32();
                for (int i = 0; i < len; i++)
                {
                    MorphFrames.Add(new VmdMorphFrameData(reader));
                }

                //camera
                len = reader.ReadUInt32();
                for (int i = 0; i < len; i++)
                {
                    CameraFrames.Add(new VmdCameraFrameData(reader));
                }

                //light
                len = reader.ReadUInt32();
                for (int i = 0; i < len; i++)
                {
                    LightFrames.Add(new VmdLightFrameData(reader));
                }

                //self shadow
                len = reader.ReadUInt32();
                for (int i = 0; i < len; i++)
                {
                    ShadowFrames.Add(new VmdShadowFrameData(reader));
                }

                len = reader.ReadUInt32();
                for (int i = 0; i < len; i++)
                {
                    PropertyFrames.Add(new VmdPropertyFrameData(reader));
                }
                return(false);
            }
            catch (EndOfStreamException)
            {
                return(true);
            }
            catch (Exception)
            {
                throw;
            }
        }