Transform UE1 vertex coords to GZDoom's when importing, rather than leaving it up to the end user.

This commit is contained in:
Marisa Kirisame 2018-05-28 08:53:53 +02:00 committed by Christoph Oelckers
parent d419bf3347
commit 58f4af6ded

View file

@ -29,11 +29,11 @@ float unpackuvert( uint32_t n, int c )
switch( c ) switch( c )
{ {
case 2: case 2:
return ((int16_t)((n&0x7ff)<<5))/127.f; return ((int16_t)((n&0x7ff)<<5))/128.f;
case 1: case 1:
return ((int16_t)(((n>>11)&0x7ff)<<5))/127.f; return ((int16_t)(((n>>11)&0x7ff)<<5))/128.f;
case 0: case 0:
return ((int16_t)(((n>>22)&0x3ff)<<6))/127.f; return ((int16_t)(((n>>22)&0x3ff)<<6))/128.f;
default: default:
return 0.f; return 0.f;
} }
@ -98,9 +98,9 @@ void FUE1Model::LoadGeometry()
{ {
UE1Vertex Vert; UE1Vertex Vert;
// unpack position // unpack position
Vert.Pos = FVector3(unpackuvert(averts[j+i*numVerts],0), Vert.Pos = FVector3(unpackuvert(averts[j+i*numVerts],2),
unpackuvert(averts[j+i*numVerts],1), unpackuvert(averts[j+i*numVerts],0),
unpackuvert(averts[j+i*numVerts],2)); -unpackuvert(averts[j+i*numVerts],1));
// push vertex (without normals, will be calculated later) // push vertex (without normals, will be calculated later)
verts.Push(Vert); verts.Push(Vert);
} }
@ -136,8 +136,6 @@ void FUE1Model::LoadGeometry()
vert[l] = verts[polys[k].V[l]+numVerts*i].Pos; vert[l] = verts[polys[k].V[l]+numVerts*i].Pos;
dir[0] = vert[1]-vert[0]; dir[0] = vert[1]-vert[0];
dir[1] = vert[2]-vert[0]; dir[1] = vert[2]-vert[0];
dir[0].MakeUnit();
dir[1].MakeUnit();
norm = dir[0]^dir[1]; norm = dir[0]^dir[1];
nsum += norm.Unit(); nsum += norm.Unit();
} }
@ -223,7 +221,7 @@ void FUE1Model::BuildVertexBuffer( FModelRenderer *renderer )
{ {
for ( int k=0; k<groups[j].numPolys; k++ ) for ( int k=0; k<groups[j].numPolys; k++ )
{ {
for ( int l=2; l>=0; l-- ) for ( int l=0; l<3; l++ )
{ {
UE1Vertex V = verts[polys[groups[j].P[k]].V[l]+i*numVerts]; UE1Vertex V = verts[polys[groups[j].P[k]].V[l]+i*numVerts];
FVector2 C = polys[groups[j].P[k]].C[l]; FVector2 C = polys[groups[j].P[k]].C[l];