This commit is contained in:
parent
754707b701
commit
2123e18de2
2 changed files with 20 additions and 25 deletions
|
@ -663,7 +663,6 @@ int AspectX0,AspectX1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
POLY_FT4 *CActorGfx::Render(DVECTOR &Pos,int Anim,int Frame,bool XFlip,bool YFlip)
|
POLY_FT4 *CActorGfx::Render(DVECTOR &Pos,int Anim,int Frame,bool XFlip,bool YFlip)
|
||||||
{
|
{
|
||||||
sPoolNode *ThisNode=CacheFrame(Anim,Frame);
|
sPoolNode *ThisNode=CacheFrame(Anim,Frame);
|
||||||
|
@ -699,35 +698,17 @@ POLY_FT4 *CActorGfx::RotateScale(POLY_FT4 *Ft4,DVECTOR &Pos,int Angle,int XScale
|
||||||
{
|
{
|
||||||
MATRIX Mtx;
|
MATRIX Mtx;
|
||||||
VECTOR Scale;
|
VECTOR Scale;
|
||||||
int ScaleInc=Angle&1023;
|
|
||||||
int Quad=0;
|
|
||||||
|
|
||||||
Angle&=4095;
|
Angle&=4095;
|
||||||
if (Angle==0 && XScale==YScale==ONE) return(Ft4);
|
if (Angle==0 && XScale==ONE && YScale==ONE) return(Ft4);
|
||||||
XScale+=ScaleXAspect;
|
|
||||||
Quad=Angle>>10;
|
|
||||||
switch(Quad)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
ScaleInc=+ScaleInc;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
ScaleInc=1023-ScaleInc;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
ScaleInc=+ScaleInc;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
ScaleInc=1023-ScaleInc;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
Scale.vx=XScale-(ScaleInc*2);
|
Scale.vx=XScale;
|
||||||
Scale.vy=YScale+(ScaleInc*2);
|
Scale.vy=YScale;
|
||||||
Scale.vz=ONE;
|
Scale.vz=ONE;
|
||||||
SetIdentNoTrans(&Mtx);
|
SetIdentNoTrans(&Mtx);
|
||||||
ScaleMatrix(&Mtx,&Scale);
|
|
||||||
RotMatrixZ(Angle,&Mtx);
|
RotMatrixZ(Angle,&Mtx);
|
||||||
|
ScaleMatrix(&Mtx,&Scale);
|
||||||
|
CorrectMatrixScale(&Mtx);
|
||||||
gte_SetRotMatrix(&Mtx);
|
gte_SetRotMatrix(&Mtx);
|
||||||
CMX_SetTransMtxXY(&ZeroPos);
|
CMX_SetTransMtxXY(&ZeroPos);
|
||||||
|
|
||||||
|
@ -913,7 +894,6 @@ u8 const *XYList=(u8*)SCRATCH_RAM;
|
||||||
|
|
||||||
RenderPos.vx=(INGAME_SCREENOFS_X)+Pos.vx;
|
RenderPos.vx=(INGAME_SCREENOFS_X)+Pos.vx;
|
||||||
RenderPos.vy=(INGAME_SCREENOFS_Y)+Pos.vy;
|
RenderPos.vy=(INGAME_SCREENOFS_Y)+Pos.vy;
|
||||||
|
|
||||||
gte_SetRotMatrix(&Mtx);
|
gte_SetRotMatrix(&Mtx);
|
||||||
CMX_SetTransMtxXY(&RenderPos);
|
CMX_SetTransMtxXY(&RenderPos);
|
||||||
|
|
||||||
|
|
|
@ -54,6 +54,21 @@ inline void SetIdentNoTrans(MATRIX *Mtx,VECTOR *S) {SetIdentNoTrans(Mtx,
|
||||||
//inline void SetIdentNoTrans(MATRIX *Mtx,s32 SX,s32 SY, s32 SZ) {SetIdentNoTrans(Mtx, SX,SY,SZ);}
|
//inline void SetIdentNoTrans(MATRIX *Mtx,s32 SX,s32 SY, s32 SZ) {SetIdentNoTrans(Mtx, SX,SY,SZ);}
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
inline void CorrectMatrixScale(MATRIX *Mtx)
|
||||||
|
{
|
||||||
|
//const s32 scale = (512 << 12) / (320+128);
|
||||||
|
//const s32 scale = ONE+ScaleXAspect+128;
|
||||||
|
const s32 scale = ONE+2050+128;
|
||||||
|
|
||||||
|
for (u32 i = 0; i < 3; ++i)
|
||||||
|
{
|
||||||
|
Mtx->m[ 0 ][ i ] = ((s32)Mtx->m[ 0 ][ i ] * scale) >> 12;
|
||||||
|
}
|
||||||
|
// dont need, as zero'd
|
||||||
|
// dst_mtx->t[ 0 ] = (dst_mtx->t[ 0 ] * scale) >> 12;
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
inline void InverseMatrix(MATRIX *m, MATRIX &im) //assumes no scale, just transformation and rotation
|
inline void InverseMatrix(MATRIX *m, MATRIX &im) //assumes no scale, just transformation and rotation
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue