public void Read(BinaryReader reader, PmxHeaderData header) { MaterialName = reader.ReadText(header.Encoding); MaterialNameE = reader.ReadText(header.Encoding); Diffuse = reader.ReadVector4(); Specular = reader.ReadVector3(); Shininess = reader.ReadSingle(); Ambient = reader.ReadVector3(); Flag = (RenderFlags)reader.ReadByte(); Edge = reader.ReadVector4(); EdgeThick = reader.ReadSingle(); TextureId = reader.ReadPmxId(header.TextureIndexSize); SphereId = reader.ReadPmxId(header.TextureIndexSize); Mode = (SphereMode)reader.ReadByte(); SharedToon = (ToonMode)reader.ReadByte(); if (SharedToon == 0) { ToonId = reader.ReadPmxId(header.TextureIndexSize); } else { ToonId = reader.ReadByte(); } Script = reader.ReadText(header.Encoding); FaceCount = reader.ReadInt32(); }
public void Write(BinaryWriter writer, PmxHeaderData header) { writer.WritePmxId(header.BoneIndexSize, Index); writer.Write(Position); writer.Write(Rotation); }
public void Write(BinaryWriter writer, PmxHeaderData header) { writer.WritePmxId(header.RigidIndexSize, Index); writer.Write(IsLocal); writer.Write(Velocity); writer.Write(Torque); }
public void ReadPmd(BinaryReader reader, PmxHeaderData header) { reader.ReadBytes(PMD_MAGIC_BYTES.Length); ModelName = reader.ReadText(Encoding, PMD_MODELNAME_LEN); Description = reader.ReadText(Encoding, PMD_MODELDESC_LEN); }
public void Read(BinaryReader reader, PmxHeaderData header) { Index = reader.ReadPmxId(header.BoneIndexSize); Position = reader.ReadVector3(); Rotation = reader.ReadQuaternion(); }
public void Write(BinaryWriter writer, PmxHeaderData header) { writer.WriteText(header.Encoding, MaterialName); writer.WriteText(header.Encoding, MaterialNameE); writer.Write(Diffuse); writer.Write(Specular); writer.Write(Shininess); writer.Write(Ambient); writer.Write((byte)Flag); writer.Write(Edge); writer.Write(EdgeThick); writer.WritePmxId(header.TextureIndexSize, TextureId); writer.WritePmxId(header.TextureIndexSize, SphereId); writer.Write((byte)Mode); writer.Write((byte)SharedToon); if (SharedToon == 0) { writer.WritePmxId(header.TextureIndexSize, ToonId); } else { writer.Write((byte)ToonId); } writer.WriteText(header.Encoding, Script); writer.Write(FaceCount); }
public void Read(BinaryReader reader, PmxHeaderData header) { Index = reader.ReadPmxId(header.RigidIndexSize); IsLocal = reader.ReadBoolean(); Velocity = reader.ReadVector3(); Torque = reader.ReadVector3(); }
public void Read(BinaryReader reader, PmxHeaderData header) { BoneName = reader.ReadText(header.Encoding); BoneNameE = reader.ReadText(header.Encoding); Pos = reader.ReadVector3(); ParentId = reader.ReadPmxId(header.BoneIndexSize); Depth = reader.ReadInt32(); Flag = (BoneFlags)reader.ReadInt16(); if (Flag.HasFlag(BoneFlags.OFFSET)) { ArrowId = reader.ReadPmxId(header.BoneIndexSize); } else { PosOffset = reader.ReadVector3(); } if (Flag.HasFlag(BoneFlags.ROTATE_LINK) || Flag.HasFlag(BoneFlags.MOVE_LINK)) { LinkParentId = reader.ReadPmxId(header.BoneIndexSize); LinkWeight = reader.ReadSingle(); } if (Flag.HasFlag(BoneFlags.AXIS_ROTATE)) { AxisVec = reader.ReadVector3(); } if (Flag.HasFlag(BoneFlags.LOCAL_AXIS)) { LocalAxisVecX = reader.ReadVector3(); LocalAxisVecZ = reader.ReadVector3(); } if (Flag.HasFlag(BoneFlags.EXTRA)) { ExtraParentId = reader.ReadInt32(); } if (Flag.HasFlag(BoneFlags.IK)) { IkTargetId = reader.ReadPmxId(header.BoneIndexSize); IkDepth = reader.ReadInt32(); AngleLimit = reader.ReadSingle(); int boneNum = reader.ReadInt32(); IkChilds = new PmxIkData[boneNum]; for (int i = 0; i < boneNum; i++) { IkChilds[i] = new PmxIkData(); IkChilds[i].Read(reader, header); } } }
public void Write(BinaryWriter writer, PmxHeaderData header) { writer.WriteText(header.Encoding, BoneName); writer.WriteText(header.Encoding, BoneNameE); writer.Write(Pos); writer.WritePmxId(header.BoneIndexSize, ParentId); writer.Write(Depth); writer.Write((short)Flag); if (Flag.HasFlag(BoneFlags.OFFSET)) { writer.WritePmxId(header.BoneIndexSize, ArrowId); } else { writer.Write(PosOffset); } if (Flag.HasFlag(BoneFlags.ROTATE_LINK) || Flag.HasFlag(BoneFlags.MOVE_LINK)) { writer.WritePmxId(header.BoneIndexSize, LinkParentId); writer.Write(LinkWeight); } if (Flag.HasFlag(BoneFlags.AXIS_ROTATE)) { writer.Write(AxisVec); } if (Flag.HasFlag(BoneFlags.LOCAL_AXIS)) { writer.Write(LocalAxisVecX); writer.Write(LocalAxisVecZ); } if (Flag.HasFlag(BoneFlags.EXTRA)) { writer.Write(ExtraParentId); } if (Flag.HasFlag(BoneFlags.IK)) { writer.WritePmxId(header.BoneIndexSize, IkTargetId); writer.Write(IkDepth); writer.Write(AngleLimit); int boneNum = IkChilds.Length; writer.Write(boneNum); for (int i = 0; i < boneNum; i++) { IkChilds[i].Write(writer, header); } } }
public void Read(BinaryReader reader, PmxHeaderData header) { MorphName = reader.ReadText(header.Encoding); MorphNameE = reader.ReadText(header.Encoding); SlotType = (MorphSlotType)reader.ReadByte(); MorphType = (MorphType)reader.ReadByte(); int elementCount = reader.ReadInt32(); MorphArray = new IPmxMorphTypeData[elementCount]; Func <IPmxMorphTypeData> factory = () => null; switch (MorphType) { case MorphType.GROUP: factory = () => new PmxMorphGroupData(); break; case MorphType.VERTEX: factory = () => new PmxMorphVertexData(); break; case MorphType.BONE: factory = () => new PmxMorphBoneData(); break; case MorphType.UV: case MorphType.EXUV1: case MorphType.EXUV2: case MorphType.EXUV3: case MorphType.EXUV4: factory = () => new PmxMorphUVData(); break; case MorphType.MATERIAL: factory = () => new PmxMorphMaterialData(); break; case MorphType.IMPULSE: factory = () => new PmxMorphImpulseData(); break; default: return; } for (int i = 0; i < MorphArray.Length; i++) { MorphArray[i] = factory(); MorphArray[i].Read(reader, header); } }
private void ReadPmxData <T>(T data, BinaryReader reader, PmxHeaderData header, bool pmd = false) where T : IPmxData { if (pmd) { data.ReadPmd(reader, header); } else { data.Read(reader, header); } }
public void Read(BinaryReader reader, PmxHeaderData header) { ChildId = reader.ReadPmxId(header.BoneIndexSize); int limit = reader.ReadByte(); if (limit > 0) { AngleMin = reader.ReadVector3(); AngleMax = reader.ReadVector3(); } }
public void ReadPmd(BinaryReader reader, PmxHeaderData header) { BoneName = reader.ReadText(header.Encoding, PMD_BONENAME_LEN); ParentId = reader.ReadUInt16(); ArrowId = reader.ReadUInt16(); byte type = reader.ReadByte(); int ikId = reader.ReadUInt16(); Pos = reader.ReadVector3(); }
public void ReadPmd(BinaryReader reader, PmxHeaderData header) { Pos = reader.ReadVector3(); Normal = reader.ReadVector3(); Uv = reader.ReadVector2(); WeightType = WeightType.BDEF2; BoneId = new int[] { reader.ReadUInt16(), reader.ReadUInt16() }; float we = reader.ReadByte() / 100.0F; Weight = new float[] { we, 1 - we }; Edge = reader.ReadBoolean() ? 0 : 1; }
public void Write(BinaryWriter writer, PmxHeaderData header) { writer.WritePmxId(header.BoneIndexSize, ChildId); int limit = AngleMin == Vector3.Zero && AngleMax == Vector3.Zero ? 0 : 1; writer.Write((byte)limit); if (limit > 0) { writer.Write(AngleMin); writer.Write(AngleMax); } }
public void Write(BinaryWriter writer, PmxHeaderData header) { writer.WritePmxId(header.MaterialIndexSize, Index); writer.Write(CalcType); writer.Write(Diffuse); writer.Write(Specular); writer.Write(Shininess); writer.Write(Ambient); writer.Write(Edge); writer.Write(EdgeThick); writer.Write(Texture); writer.Write(SphereTexture); writer.Write(ToonTexture); }
public void Read(BinaryReader reader, PmxHeaderData header) { Index = reader.ReadPmxId(header.MaterialIndexSize); CalcType = reader.ReadByte(); Diffuse = reader.ReadVector4(); Specular = reader.ReadVector3(); Shininess = reader.ReadSingle(); Ambient = reader.ReadVector3(); Edge = reader.ReadVector4(); EdgeThick = reader.ReadSingle(); Texture = reader.ReadVector4(); SphereTexture = reader.ReadVector4(); ToonTexture = reader.ReadVector4(); }
public void Write(BinaryWriter writer, PmxHeaderData header) { writer.WriteText(header.Encoding, MorphName); writer.WriteText(header.Encoding, MorphNameE); writer.Write((byte)SlotType); writer.Write((byte)MorphType); writer.Write(MorphArray.Length); for (int i = 0; i < MorphArray.Length; i++) { MorphArray[i].Write(writer, header); } }
public void Write(BinaryWriter writer, PmxHeaderData header) { writer.Write(Pos); writer.Write(Normal); writer.Write(Uv); for (int i = 0; i < header.NumberOfExtraUv; i++) { writer.Write(GetExtraUv(i)); } writer.Write((byte)WeightType); for (byte i = 0; i < BoneId.Length; i++) { writer.WritePmxId(header.BoneIndexSize, BoneId[i]); } switch (WeightType) { case WeightType.BDEF1: break; case WeightType.BDEF2: case WeightType.SDEF: writer.Write(Weight[0]); break; case WeightType.BDEF4: for (byte i = 0; i < 4; i++) { writer.Write(Weight[i]); } break; } if (WeightType == WeightType.SDEF) { writer.Write(Sdef_c); writer.Write(Sdef_r0); writer.Write(Sdef_r1); } writer.Write(Edge); }
public void Read(BinaryReader reader, PmxHeaderData header) { SlotName = reader.ReadText(header.Encoding); SlotNameE = reader.ReadText(header.Encoding); NormalSlot = reader.ReadByte() == 0; int elementCount = reader.ReadInt32(); Indices = new int[elementCount]; for (int i = 0; i < elementCount; i++) { byte type = reader.ReadByte(); byte size = type == (byte)SlotType.BONE ? header.BoneIndexSize : header.MorphIndexSize; Indices[i] = reader.ReadPmxId(size); } }
private T[] ReadPmxData <T>(BinaryReader reader, PmxHeaderData header, int len, bool pmd = false) where T : IPmxData, new() { T[] array = new T[len]; for (int i = 0; i < len; i++) { array[i] = new T(); if (pmd) { array[i].ReadPmd(reader, header); } else { array[i].Read(reader, header); } } return(array); }
public void Write(BinaryWriter writer, PmxHeaderData header) { writer.WriteText(header.Encoding, JointName); writer.WriteText(header.Encoding, JointNameE); writer.Write((byte)JointType); writer.WritePmxId(header.RigidIndexSize, RigidBodyA); writer.WritePmxId(header.RigidIndexSize, RigidBodyB); writer.Write(Pos); writer.Write(Rot); writer.Write(PosMin); writer.Write(PosMax); writer.Write(RotMin); writer.Write(RotMax); writer.Write(SpringConstantPos); writer.Write(SpringConstantRot); }
public void Read(BinaryReader reader, PmxHeaderData header) { JointName = reader.ReadText(header.Encoding); JointNameE = reader.ReadText(header.Encoding); JointType = (JointType)reader.ReadByte(); RigidBodyA = reader.ReadPmxId(header.RigidIndexSize); RigidBodyB = reader.ReadPmxId(header.RigidIndexSize); Pos = reader.ReadVector3(); Rot = reader.ReadVector3(); PosMin = reader.ReadVector3(); PosMax = reader.ReadVector3(); RotMin = reader.ReadVector3(); RotMax = reader.ReadVector3(); SpringConstantPos = reader.ReadVector3(); SpringConstantRot = reader.ReadVector3(); }
public void Write(BinaryWriter writer, PmxHeaderData header) { writer.WriteText(header.Encoding, SlotName); writer.WriteText(header.Encoding, SlotNameE); writer.Write((byte)(NormalSlot ? 0 : 1)); int elementCount = Indices.Length; writer.Write(elementCount); byte size = Type == SlotType.BONE ? header.BoneIndexSize : header.MorphIndexSize; for (int i = 0; i < elementCount; i++) { writer.Write((byte)Type); int id = Indices[i]; writer.WritePmxId(size, id); } }
public void Write(BinaryWriter writer, PmxHeaderData header) { writer.Write(MAGIC_BYTES); writer.Write(Version); writer.Write((byte)8);//length of byte array writer.Write((byte)(Encoding == Encoding.UTF8 ? 1 : 0)); writer.Write(NumberOfExtraUv); writer.Write(VertexIndexSize); writer.Write(TextureIndexSize); writer.Write(MaterialIndexSize); writer.Write(BoneIndexSize); writer.Write(MorphIndexSize); writer.Write(RigidIndexSize); writer.WriteText(Encoding, ModelName); writer.WriteText(Encoding, ModelNameE); writer.WriteText(Encoding, Description.Replace(LF, CRLF)); writer.WriteText(Encoding, DescriptionE.Replace(LF, CRLF)); }
public void Read(BinaryReader reader, PmxHeaderData header) { reader.ReadBytes(MAGIC_BYTES.Length); Version = reader.ReadSingle(); reader.ReadByte(); //length of byte array Encoding = reader.ReadByte() == 1 ? Encoding.UTF8 : Encoding.GetEncoding("utf-16"); NumberOfExtraUv = reader.ReadByte(); VertexIndexSize = reader.ReadByte(); TextureIndexSize = reader.ReadByte(); MaterialIndexSize = reader.ReadByte(); BoneIndexSize = reader.ReadByte(); MorphIndexSize = reader.ReadByte(); RigidIndexSize = reader.ReadByte(); ModelName = reader.ReadText(Encoding); ModelNameE = reader.ReadText(Encoding); Description = reader.ReadText(Encoding); DescriptionE = reader.ReadText(Encoding); }
public void ReadPmd(BinaryReader reader, PmxHeaderData header) { Diffuse = reader.ReadVector4(); Shininess = reader.ReadSingle(); Specular = reader.ReadVector3(); Ambient = reader.ReadVector3(); Edge = new Vector4(1, 1, 1, 1); EdgeThick = 1.0F; SharedToon = ToonMode.SHARED_FILE; ToonId = reader.ReadByte(); if (reader.ReadBoolean()) { Flag |= RenderFlags.EDGE; } FaceCount = reader.ReadInt32(); reader.ReadBytes(PMD_TEXTUREFILENAME_LEN); // テクスチャ未実装 }
public void Write(BinaryWriter writer, PmxHeaderData header) { writer.WriteText(header.Encoding, RigidName); writer.WriteText(header.Encoding, RigidNameE); writer.WritePmxId(header.BoneIndexSize, BoneId); writer.Write(Group); writer.Write(GroupFlag); writer.Write((byte)Shape); writer.Write(Size); writer.Write(Pos); writer.Write(Rot); writer.Write(Mass); writer.Write(MovingAttenuation); writer.Write(RotationAttenuation); writer.Write(Repulsive); writer.Write(Frictional); writer.Write((byte)RigidType); }
public void Read(BinaryReader reader, PmxHeaderData header) { RigidName = reader.ReadText(header.Encoding); RigidNameE = reader.ReadText(header.Encoding); BoneId = reader.ReadPmxId(header.BoneIndexSize); Group = reader.ReadByte(); GroupFlag = reader.ReadUInt16(); Shape = (RigidShape)reader.ReadByte(); Size = reader.ReadVector3(); Pos = reader.ReadVector3(); Rot = reader.ReadVector3(); Mass = reader.ReadSingle(); MovingAttenuation = reader.ReadSingle(); RotationAttenuation = reader.ReadSingle(); Repulsive = reader.ReadSingle(); Frictional = reader.ReadSingle(); RigidType = (RigidType)reader.ReadByte(); }
private T[] ReadPmxData <T>(BinaryReader reader, PmxHeaderData header, bool pmd = false) where T : IPmxData, new() { return(ReadPmxData <T>(reader, header, reader.ReadInt32(), pmd)); }