示例#1
0
        internal int ReadIndex(BinaryReader br, PmxIndexKind kind)
        {
            switch (kind)
            {
            case PmxIndexKind.Vertex:
                return(this.Header.VertexIndexSize == PmxVertexIndexSize.UInt8
                                                ? br.ReadByte()
                                                : this.Header.VertexIndexSize == PmxVertexIndexSize.UInt16
                                                        ? br.ReadUInt16()
                                                        : br.ReadInt32());

            case PmxIndexKind.Texture:
                return(this.Header.TextureIndexSize == PmxIndexSize.Int8
                                                ? br.ReadSByte()
                                                : this.Header.TextureIndexSize == PmxIndexSize.Int16
                                                        ? br.ReadInt16()
                                                        : br.ReadInt32());

            case PmxIndexKind.Material:
                return(this.Header.MaterialIndexSize == PmxIndexSize.Int8
                                                ? br.ReadSByte()
                                                : this.Header.MaterialIndexSize == PmxIndexSize.Int16
                                                        ? br.ReadInt16()
                                                        : br.ReadInt32());

            case PmxIndexKind.Bone:
                return(this.Header.BoneIndexSize == PmxIndexSize.Int8
                                                ? br.ReadSByte()
                                                : this.Header.BoneIndexSize == PmxIndexSize.Int16
                                                        ? br.ReadInt16()
                                                        : br.ReadInt32());

            case PmxIndexKind.Morph:
                return(this.Header.MorphIndexSize == PmxIndexSize.Int8
                                                ? br.ReadSByte()
                                                : this.Header.MorphIndexSize == PmxIndexSize.Int16
                                                        ? br.ReadInt16()
                                                        : br.ReadInt32());

            case PmxIndexKind.Rigid:
                return(this.Header.RigidIndexSize == PmxIndexSize.Int8
                                                ? br.ReadSByte()
                                                : this.Header.RigidIndexSize == PmxIndexSize.Int16
                                                        ? br.ReadInt16()
                                                        : br.ReadInt32());

            default:
                throw new ArgumentException();
            }
        }
示例#2
0
        internal void WriteIndex(BinaryWriter bw, PmxIndexKind kind, int index)
        {
            switch (kind)
            {
                case PmxIndexKind.Vertex:
                    switch (this.Header.VertexIndexSize)
                    {
                        case PmxVertexIndexSize.UInt8:
                            bw.Write((byte)index);

                            break;
                        case PmxVertexIndexSize.UInt16:
                            bw.Write((ushort)index);

                            break;
                        case PmxVertexIndexSize.Int32:
                            bw.Write(index);

                            break;
                    }

                    break;
                case PmxIndexKind.Texture:
                    switch (this.Header.TextureIndexSize)
                    {
                        case PmxIndexSize.Int8:
                            bw.Write((byte)index);

                            break;
                        case PmxIndexSize.Int16:
                            bw.Write((short)index);

                            break;
                        case PmxIndexSize.Int32:
                            bw.Write(index);

                            break;
                    }

                    break;
                case PmxIndexKind.Material:
                    switch (this.Header.MaterialIndexSize)
                    {
                        case PmxIndexSize.Int8:
                            bw.Write((byte)index);

                            break;
                        case PmxIndexSize.Int16:
                            bw.Write((short)index);

                            break;
                        case PmxIndexSize.Int32:
                            bw.Write(index);

                            break;
                    }

                    break;
                case PmxIndexKind.Bone:
                    switch (this.Header.BoneIndexSize)
                    {
                        case PmxIndexSize.Int8:
                            bw.Write((byte)index);

                            break;
                        case PmxIndexSize.Int16:
                            bw.Write((short)index);

                            break;
                        case PmxIndexSize.Int32:
                            bw.Write(index);

                            break;
                    }

                    break;
                case PmxIndexKind.Morph:
                    switch (this.Header.MorphIndexSize)
                    {
                        case PmxIndexSize.Int8:
                            bw.Write((byte)index);

                            break;
                        case PmxIndexSize.Int16:
                            bw.Write((short)index);

                            break;
                        case PmxIndexSize.Int32:
                            bw.Write(index);

                            break;
                    }

                    break;
                case PmxIndexKind.Rigid:
                    switch (this.Header.RigidIndexSize)
                    {
                        case PmxIndexSize.Int8:
                            bw.Write((byte)index);

                            break;
                        case PmxIndexSize.Int16:
                            bw.Write((short)index);

                            break;
                        case PmxIndexSize.Int32:
                            bw.Write(index);

                            break;
                    }

                    break;
                default:
                    throw new ArgumentException();
            }
        }
示例#3
0
 internal int ReadIndex(BinaryReader br, PmxIndexKind kind)
 {
     switch (kind)
     {
         case PmxIndexKind.Vertex:
             return this.Header.VertexIndexSize == PmxVertexIndexSize.UInt8
                 ? br.ReadByte()
                 : this.Header.VertexIndexSize == PmxVertexIndexSize.UInt16
                     ? br.ReadUInt16()
                     : br.ReadInt32();
         case PmxIndexKind.Texture:
             return this.Header.TextureIndexSize == PmxIndexSize.Int8
                 ? br.ReadSByte()
                 : this.Header.TextureIndexSize == PmxIndexSize.Int16
                     ? br.ReadInt16()
                     : br.ReadInt32();
         case PmxIndexKind.Material:
             return this.Header.MaterialIndexSize == PmxIndexSize.Int8
                 ? br.ReadSByte()
                 : this.Header.MaterialIndexSize == PmxIndexSize.Int16
                     ? br.ReadInt16()
                     : br.ReadInt32();
         case PmxIndexKind.Bone:
             return this.Header.BoneIndexSize == PmxIndexSize.Int8
                 ? br.ReadSByte()
                 : this.Header.BoneIndexSize == PmxIndexSize.Int16
                     ? br.ReadInt16()
                     : br.ReadInt32();
         case PmxIndexKind.Morph:
             return this.Header.MorphIndexSize == PmxIndexSize.Int8
                 ? br.ReadSByte()
                 : this.Header.MorphIndexSize == PmxIndexSize.Int16
                     ? br.ReadInt16()
                     : br.ReadInt32();
         case PmxIndexKind.Rigid:
             return this.Header.RigidIndexSize == PmxIndexSize.Int8
                 ? br.ReadSByte()
                 : this.Header.RigidIndexSize == PmxIndexSize.Int16
                     ? br.ReadInt16()
                     : br.ReadInt32();
         default:
             throw new ArgumentException();
     }
 }
示例#4
0
        internal void WriteIndex(BinaryWriter bw, PmxIndexKind kind, int index)
        {
            switch (kind)
            {
            case PmxIndexKind.Vertex:
                switch (this.Header.VertexIndexSize)
                {
                case PmxVertexIndexSize.UInt8:
                    bw.Write((byte)index);

                    break;

                case PmxVertexIndexSize.UInt16:
                    bw.Write((ushort)index);

                    break;

                case PmxVertexIndexSize.Int32:
                    bw.Write(index);

                    break;
                }

                break;

            case PmxIndexKind.Texture:
                switch (this.Header.TextureIndexSize)
                {
                case PmxIndexSize.Int8:
                    bw.Write((byte)index);

                    break;

                case PmxIndexSize.Int16:
                    bw.Write((short)index);

                    break;

                case PmxIndexSize.Int32:
                    bw.Write(index);

                    break;
                }

                break;

            case PmxIndexKind.Material:
                switch (this.Header.MaterialIndexSize)
                {
                case PmxIndexSize.Int8:
                    bw.Write((byte)index);

                    break;

                case PmxIndexSize.Int16:
                    bw.Write((short)index);

                    break;

                case PmxIndexSize.Int32:
                    bw.Write(index);

                    break;
                }

                break;

            case PmxIndexKind.Bone:
                switch (this.Header.BoneIndexSize)
                {
                case PmxIndexSize.Int8:
                    bw.Write((byte)index);

                    break;

                case PmxIndexSize.Int16:
                    bw.Write((short)index);

                    break;

                case PmxIndexSize.Int32:
                    bw.Write(index);

                    break;
                }

                break;

            case PmxIndexKind.Morph:
                switch (this.Header.MorphIndexSize)
                {
                case PmxIndexSize.Int8:
                    bw.Write((byte)index);

                    break;

                case PmxIndexSize.Int16:
                    bw.Write((short)index);

                    break;

                case PmxIndexSize.Int32:
                    bw.Write(index);

                    break;
                }

                break;

            case PmxIndexKind.Rigid:
                switch (this.Header.RigidIndexSize)
                {
                case PmxIndexSize.Int8:
                    bw.Write((byte)index);

                    break;

                case PmxIndexSize.Int16:
                    bw.Write((short)index);

                    break;

                case PmxIndexSize.Int32:
                    bw.Write(index);

                    break;
                }

                break;

            default:
                throw new ArgumentException();
            }
        }