Пример #1
0
 private void WriteVertexToDisplayList(GXDisplayListPacker dlpacker, ref int lastColourARGB, ref Vector2 tcscale,
     ref int lastmatrix, ref Vector4 lastvtx, ref Vector3 lastnrm, ModelBase.VertexDef vertex)
 {
     Vector4 vtx = new Vector4(vertex.m_Position, 0f);
     int matrixID = m_Model.m_BoneTransformsMap.GetByFirst(m_Model.m_BoneTree.GetBoneByIndex(vertex.m_VertexBoneID).m_ID);
     if (lastmatrix != matrixID)
     {
         dlpacker.AddCommand(0x14, (uint)matrixID);// Matrix Restore ID for current vertex
         lastmatrix = matrixID;
     }
     if (vertex.m_TextureCoordinate != null)
     {
         dlpacker.AddTexCoordCommand(Vector2.Multiply((Vector2)vertex.m_TextureCoordinate, tcscale));
     }
     if (vertex.m_Normal != null && (Vector3)vertex.m_Normal != lastnrm)
     {
         dlpacker.AddNormalCommand((Vector3)vertex.m_Normal);
         lastnrm = (Vector3)vertex.m_Normal;
     }
     if (vertex.m_VertexColour != null && ((Color)vertex.m_VertexColour).ToArgb() != lastColourARGB)
     {
         dlpacker.AddColorCommand((Color)vertex.m_VertexColour);
         lastColourARGB = ((Color)vertex.m_VertexColour).ToArgb();
     }
     dlpacker.AddVertexCommand(vtx, lastvtx, m_AlwaysWriteFullVertexCmd23h);
     lastvtx = vtx;
 }