public void ToStreamEx_TexTable(Stream s, PmxTextureTable tx, PmxElementFormat f = null)
        {
            PmxStreamHelper.WriteString(s, Name, f);
            PmxStreamHelper.WriteString(s, NameE, f);
            V4_BytesConvert.ToStream(s, Diffuse);
            V3_BytesConvert.ToStream(s, Specular);
            PmxStreamHelper.WriteElement_Float(s, Power);
            V3_BytesConvert.ToStream(s, Ambient);
            s.WriteByte((byte)Flags);
            V4_BytesConvert.ToStream(s, EdgeColor);
            PmxStreamHelper.WriteElement_Float(s, EdgeSize);
            PmxStreamHelper.WriteElement_Int32(s, tx.GetIndex(Tex), f.TexSize);
            PmxStreamHelper.WriteElement_Int32(s, tx.GetIndex(Sphere), f.TexSize);
            s.WriteByte((byte)SphereMode);
            int toonIndex = SystemToon.GetToonIndex(Toon);

            if (toonIndex < 0)
            {
                s.WriteByte(0);
                PmxStreamHelper.WriteElement_Int32(s, tx.GetIndex(Toon), f.TexSize);
            }
            else
            {
                s.WriteByte(1);
                s.WriteByte((byte)toonIndex);
            }
            PmxStreamHelper.WriteString(s, Memo, f);
            PmxStreamHelper.WriteElement_Int32(s, FaceCount);
            if (f.WithID)
            {
                PmxStreamHelper.WriteElement_UInt(s, base.UID);
                PmxStreamHelper.WriteElement_UInt(s, base.CID);
            }
        }
Ejemplo n.º 2
0
 public void ToStreamEx(Stream s, PmxElementFormat f = null)
 {
     PmxStreamHelper.WriteString(s, Name, f);
     PmxStreamHelper.WriteString(s, NameE, f);
     if (Kind != 0 && f.Ver < 2.1f)
     {
         s.WriteByte(0);
     }
     else
     {
         s.WriteByte((byte)Kind);
     }
     PmxStreamHelper.WriteElement_Int32(s, BodyA, f.BodySize);
     PmxStreamHelper.WriteElement_Int32(s, BodyB, f.BodySize);
     V3_BytesConvert.ToStream(s, Position);
     V3_BytesConvert.ToStream(s, Rotation);
     V3_BytesConvert.ToStream(s, Limit_MoveLow);
     V3_BytesConvert.ToStream(s, Limit_MoveHigh);
     V3_BytesConvert.ToStream(s, Limit_AngleLow);
     V3_BytesConvert.ToStream(s, Limit_AngleHigh);
     V3_BytesConvert.ToStream(s, SpConst_Move);
     V3_BytesConvert.ToStream(s, SpConst_Rotate);
     if (f.WithID)
     {
         PmxStreamHelper.WriteElement_UInt(s, base.UID);
         PmxStreamHelper.WriteElement_UInt(s, base.CID);
     }
 }
 public virtual void ToStreamEx(Stream s, PmxElementFormat f = null)
 {
     if (f.WithID)
     {
         PmxStreamHelper.WriteElement_UInt(s, base.UID);
         PmxStreamHelper.WriteElement_UInt(s, base.CID);
     }
 }
Ejemplo n.º 4
0
        public void ToStreamEx(Stream s, PmxElementFormat f = null)
        {
            if (IsImpulse && f.Ver < 2.1f)
            {
                return;
            }
            PmxStreamHelper.WriteString(s, Name, f);
            PmxStreamHelper.WriteString(s, NameE, f);
            PmxStreamHelper.WriteElement_Int32(s, Panel, 1);
            if (IsFlip && f.Ver < 2.1f)
            {
                PmxStreamHelper.WriteElement_Int32(s, 0, 1);
            }
            else
            {
                PmxStreamHelper.WriteElement_Int32(s, (int)Kind, 1);
            }
            PmxStreamHelper.WriteElement_Int32(s, OffsetList.Count);
            for (int i = 0; i < OffsetList.Count; i++)
            {
                switch (Kind)
                {
                case OffsetKind.Group:
                case OffsetKind.Flip:
                    (OffsetList[i] as PmxGroupMorph).ToStreamEx(s, f);
                    break;

                case OffsetKind.Vertex:
                    (OffsetList[i] as PmxVertexMorph).ToStreamEx(s, f);
                    break;

                case OffsetKind.Bone:
                    (OffsetList[i] as PmxBoneMorph).ToStreamEx(s, f);
                    break;

                case OffsetKind.Impulse:
                    (OffsetList[i] as PmxImpulseMorph).ToStreamEx(s, f);
                    break;

                case OffsetKind.Material:
                    (OffsetList[i] as PmxMaterialMorph).ToStreamEx(s, f);
                    break;

                case OffsetKind.UV:
                case OffsetKind.UVA1:
                case OffsetKind.UVA2:
                case OffsetKind.UVA3:
                case OffsetKind.UVA4:
                    (OffsetList[i] as PmxUVMorph).ToStreamEx(s, f);
                    break;
                }
            }
            if (f.WithID)
            {
                PmxStreamHelper.WriteElement_UInt(s, base.UID);
                PmxStreamHelper.WriteElement_UInt(s, base.CID);
            }
        }
Ejemplo n.º 5
0
        public void ToStreamEx(Stream s, PmxElementFormat f = null)
        {
            V3_BytesConvert.ToStream(s, Position);
            V3_BytesConvert.ToStream(s, Normal);
            V2_BytesConvert.ToStream(s, UV);
            for (int i = 0; i < f.UVACount; i++)
            {
                V4_BytesConvert.ToStream(s, UVA[i]);
            }
            if (Deform == DeformType.QDEF && f.Ver < 2.1f)
            {
                s.WriteByte(2);
            }
            else
            {
                s.WriteByte((byte)Deform);
            }
            switch (Deform)
            {
            case DeformType.BDEF1:
                PmxStreamHelper.WriteElement_Int32(s, Weight[0].Bone, f.BoneSize);
                break;

            case DeformType.BDEF2:
                PmxStreamHelper.WriteElement_Int32(s, Weight[0].Bone, f.BoneSize);
                PmxStreamHelper.WriteElement_Int32(s, Weight[1].Bone, f.BoneSize);
                PmxStreamHelper.WriteElement_Float(s, Weight[0].Value);
                break;

            case DeformType.BDEF4:
            case DeformType.QDEF:
                PmxStreamHelper.WriteElement_Int32(s, Weight[0].Bone, f.BoneSize);
                PmxStreamHelper.WriteElement_Int32(s, Weight[1].Bone, f.BoneSize);
                PmxStreamHelper.WriteElement_Int32(s, Weight[2].Bone, f.BoneSize);
                PmxStreamHelper.WriteElement_Int32(s, Weight[3].Bone, f.BoneSize);
                PmxStreamHelper.WriteElement_Float(s, Weight[0].Value);
                PmxStreamHelper.WriteElement_Float(s, Weight[1].Value);
                PmxStreamHelper.WriteElement_Float(s, Weight[2].Value);
                PmxStreamHelper.WriteElement_Float(s, Weight[3].Value);
                break;

            case DeformType.SDEF:
                PmxStreamHelper.WriteElement_Int32(s, Weight[0].Bone, f.BoneSize);
                PmxStreamHelper.WriteElement_Int32(s, Weight[1].Bone, f.BoneSize);
                PmxStreamHelper.WriteElement_Float(s, Weight[0].Value);
                V3_BytesConvert.ToStream(s, C0);
                V3_BytesConvert.ToStream(s, R0);
                V3_BytesConvert.ToStream(s, R1);
                break;
            }
            PmxStreamHelper.WriteElement_Float(s, EdgeScale);
            if (f.WithID)
            {
                PmxStreamHelper.WriteElement_UInt(s, base.UID);
                PmxStreamHelper.WriteElement_UInt(s, base.CID);
            }
        }
Ejemplo n.º 6
0
 public void ToStreamEx(Stream s, PmxElementFormat f = null)
 {
     PmxStreamHelper.WriteString(s, Name, f);
     PmxStreamHelper.WriteString(s, NameE, f);
     PmxStreamHelper.WriteElement_Int32(s, (int)Shape, 1);
     PmxStreamHelper.WriteElement_Int32(s, Material, f.MaterialSize);
     PmxStreamHelper.WriteElement_Int32(s, Group, 1);
     PmxStreamHelper.WriteElement_Int32(s, PassGroup.ToFlagBits(), 2, signed: false);
     PmxStreamHelper.WriteElement_Int32(s, (int)Flags, 1, signed: false);
     PmxStreamHelper.WriteElement_Int32(s, BendingLinkDistance);
     PmxStreamHelper.WriteElement_Int32(s, ClusterCount);
     PmxStreamHelper.WriteElement_Float(s, TotalMass);
     PmxStreamHelper.WriteElement_Float(s, Margin);
     PmxStreamHelper.WriteElement_Int32(s, Config.AeroModel);
     PmxStreamHelper.WriteElement_Float(s, Config.VCF);
     PmxStreamHelper.WriteElement_Float(s, Config.DP);
     PmxStreamHelper.WriteElement_Float(s, Config.DG);
     PmxStreamHelper.WriteElement_Float(s, Config.LF);
     PmxStreamHelper.WriteElement_Float(s, Config.PR);
     PmxStreamHelper.WriteElement_Float(s, Config.VC);
     PmxStreamHelper.WriteElement_Float(s, Config.DF);
     PmxStreamHelper.WriteElement_Float(s, Config.MT);
     PmxStreamHelper.WriteElement_Float(s, Config.CHR);
     PmxStreamHelper.WriteElement_Float(s, Config.KHR);
     PmxStreamHelper.WriteElement_Float(s, Config.SHR);
     PmxStreamHelper.WriteElement_Float(s, Config.AHR);
     PmxStreamHelper.WriteElement_Float(s, Config.SRHR_CL);
     PmxStreamHelper.WriteElement_Float(s, Config.SKHR_CL);
     PmxStreamHelper.WriteElement_Float(s, Config.SSHR_CL);
     PmxStreamHelper.WriteElement_Float(s, Config.SR_SPLT_CL);
     PmxStreamHelper.WriteElement_Float(s, Config.SK_SPLT_CL);
     PmxStreamHelper.WriteElement_Float(s, Config.SS_SPLT_CL);
     PmxStreamHelper.WriteElement_Int32(s, Config.V_IT);
     PmxStreamHelper.WriteElement_Int32(s, Config.P_IT);
     PmxStreamHelper.WriteElement_Int32(s, Config.D_IT);
     PmxStreamHelper.WriteElement_Int32(s, Config.C_IT);
     PmxStreamHelper.WriteElement_Float(s, MaterialConfig.LST);
     PmxStreamHelper.WriteElement_Float(s, MaterialConfig.AST);
     PmxStreamHelper.WriteElement_Float(s, MaterialConfig.VST);
     PmxStreamHelper.WriteElement_Int32(s, BodyAnchorList.Count);
     for (int i = 0; i < BodyAnchorList.Count; i++)
     {
         PmxStreamHelper.WriteElement_Int32(s, BodyAnchorList[i].Body, f.BodySize);
         PmxStreamHelper.WriteElement_Int32(s, BodyAnchorList[i].Vertex, f.VertexSize, signed: false);
         PmxStreamHelper.WriteElement_Int32(s, BodyAnchorList[i].IsNear ? 1 : 0, 1);
     }
     PmxStreamHelper.WriteElement_Int32(s, VertexPinList.Count);
     for (int j = 0; j < VertexPinList.Count; j++)
     {
         PmxStreamHelper.WriteElement_Int32(s, VertexPinList[j].Vertex, f.VertexSize, signed: false);
     }
     if (f.WithID)
     {
         PmxStreamHelper.WriteElement_UInt(s, base.UID);
         PmxStreamHelper.WriteElement_UInt(s, base.CID);
     }
 }
Ejemplo n.º 7
0
 public void ToStreamEx(Stream s, PmxElementFormat f = null)
 {
     PmxStreamHelper.WriteString(s, Name, f);
     PmxStreamHelper.WriteString(s, NameE, f);
     V3_BytesConvert.ToStream(s, Position);
     PmxStreamHelper.WriteElement_Int32(s, Parent, f.BoneSize);
     PmxStreamHelper.WriteElement_Int32(s, Level);
     PmxStreamHelper.WriteElement_Int32(s, (int)Flags, 2, signed: false);
     if (GetFlag(BoneFlags.ToBone))
     {
         PmxStreamHelper.WriteElement_Int32(s, To_Bone, f.BoneSize);
     }
     else
     {
         V3_BytesConvert.ToStream(s, To_Offset);
     }
     if (GetFlag(BoneFlags.AddRotation) || GetFlag(BoneFlags.AddTranslation))
     {
         PmxStreamHelper.WriteElement_Int32(s, AddParent, f.BoneSize);
         PmxStreamHelper.WriteElement_Float(s, AddRatio);
     }
     if (GetFlag(BoneFlags.FixAxis))
     {
         V3_BytesConvert.ToStream(s, Axis);
     }
     if (GetFlag(BoneFlags.LocalFrame))
     {
         if (!f.WithID)
         {
             NormalizeLocal();
         }
         V3_BytesConvert.ToStream(s, LocalX);
         V3_BytesConvert.ToStream(s, LocalZ);
     }
     if (GetFlag(BoneFlags.ExtParent))
     {
         PmxStreamHelper.WriteElement_Int32(s, ExtKey);
     }
     if (GetFlag(BoneFlags.IK))
     {
         IK.ToStreamEx(s, f);
     }
     if (f.WithID)
     {
         PmxStreamHelper.WriteElement_UInt(s, base.UID);
         PmxStreamHelper.WriteElement_UInt(s, base.CID);
     }
 }
Ejemplo n.º 8
0
 public void ToStreamEx(Stream s, PmxElementFormat f = null)
 {
     PmxStreamHelper.WriteString(s, Name, f);
     PmxStreamHelper.WriteString(s, NameE, f);
     s.WriteByte((byte)(SystemNode ? 1u : 0u));
     PmxStreamHelper.WriteElement_Int32(s, ElementList.Count);
     for (int i = 0; i < ElementList.Count; i++)
     {
         ElementList[i].ToStreamEx(s, f);
     }
     if (f.WithID)
     {
         PmxStreamHelper.WriteElement_UInt(s, base.UID);
         PmxStreamHelper.WriteElement_UInt(s, base.CID);
     }
 }
Ejemplo n.º 9
0
            public void ToStreamEx(Stream s, PmxElementFormat f = null)
            {
                s.WriteByte((byte)ElementType);
                switch (ElementType)
                {
                case ElementType.Bone:
                    PmxStreamHelper.WriteElement_Int32(s, Index, f.BoneSize);
                    break;

                case ElementType.Morph:
                    PmxStreamHelper.WriteElement_Int32(s, Index, f.MorphSize);
                    break;
                }
                if (f.WithID)
                {
                    PmxStreamHelper.WriteElement_UInt(s, base.UID);
                    PmxStreamHelper.WriteElement_UInt(s, base.CID);
                }
            }
Ejemplo n.º 10
0
 public void ToStreamEx(Stream s, PmxElementFormat f = null)
 {
     PmxStreamHelper.WriteString(s, Name, f);
     PmxStreamHelper.WriteString(s, NameE, f);
     PmxStreamHelper.WriteElement_Int32(s, Bone, f.BoneSize);
     PmxStreamHelper.WriteElement_Int32(s, Group, 1);
     PmxStreamHelper.WriteElement_Int32(s, PassGroup.ToFlagBits(), 2, signed: false);
     s.WriteByte((byte)BoxType);
     V3_BytesConvert.ToStream(s, BoxSize);
     V3_BytesConvert.ToStream(s, Position);
     V3_BytesConvert.ToStream(s, Rotation);
     PmxStreamHelper.WriteElement_Float(s, Mass);
     V4_BytesConvert.ToStream(s, new Vector4(PositionDamping, RotationDamping, Restitution, Friction));
     s.WriteByte((byte)Mode);
     if (f.WithID)
     {
         PmxStreamHelper.WriteElement_UInt(s, base.UID);
         PmxStreamHelper.WriteElement_UInt(s, base.CID);
     }
 }