//============================================================ // <T>序列化内部数据到输出流。</T> // // @param output 输出流 //============================================================ public void Serialize(IOutput output) { // 输出属性 output.WriteString(_typeName); // 输出中心 output.WriteFloat(_centerFront); output.WriteFloat(_centerBack); // 输出位置 _position.Serialize(output); // 输出方向 _direction.Serialize(output); // 输出焦平面 output.WriteFloat(_focalNear); output.WriteFloat(_focalFar); // 输出视角 _viewport.Serialize(output); }
//============================================================ public void Serialize(FDrGeometry submesh, int flags, IOutput output) { // 输出顶点 if (0 != (EDrVertex.Position & flags)) { _position.Serialize(output); } // 输出颜色 if (0 != (EDrVertex.Color & flags)) { _color.SerializeByteUnsigned4(output); } // 输出坐标 if (0 != (EDrVertex.Coord & flags)) { output.WriteFloat(_coord.X); output.WriteFloat(1 + _coord.Y); if (0 != (EDrVertex.CoordLight & flags)) { output.WriteFloat(_lightCoord.X); output.WriteFloat(_lightCoord.Y); } } // 输出法线,副法线,切线 if (0 != (EDrVertex.Normal & flags)) { _normal.SerializeByteSigned3(output); output.WriteUint8(1); //output.WriteUint8((byte)Illum); } if (0 != (EDrVertex.Binormal & flags)) { _binormal.SerializeByteSigned3(output); output.WriteUint8(1); } if (0 != (EDrVertex.Tangent & flags)) { _tangent.SerializeByteSigned3(output); output.WriteUint8(1); } // 使用两条管道,每条管道4个数据,前管道为索引内容,后管道为权重 int count = _weights.Count; if (0 != (EDrVertex.BoneIndex & flags)) { for (int n = 0; n < _maxWeightCount; n++) { int value = 0; if (n < count) { value = submesh.FindAdjustBoneIndex(_weights[n].BoneId); } output.WriteUint8((byte)value); } } if (0 != (EDrVertex.BoneWeight & flags)) { for (int n = 0; n < _maxWeightCount; n++) { float value = 0; if (n < count) { value = _weights[n].Weight; } output.WriteUint8((byte)(value * 255)); } } }
//============================================================ public void Serialize(IOutput output) { _translation.Serialize(output); _euler.Serialize(output); _scale.Serialize(output); }