by Graf Zahl » Fri Mar 11, 2005 8:14 am
Code: Select all
function int abs(int x)
{
if (x>=0) return x;
return -x;
}
function int min(int x, int y)
{
if (x<y) return x;
else return y;
}
function int AproxDistance(int dx, int dy)
{
int dx = abs(dx);
int dy = abs(dy);
return dx+dy-(min(dx,dy)>>1);
}
function void GetDistance(int tid)
{
int x=abs(GetActorX(tid)-GetActorX(activatortid()));
int y=abs(GetActorY(tid)-GetActorY(activatortid()));
int z=abs(GetActorZ(tid)-GetActorZ(activatortid()));
return AproxDistance(AproxDistance(x,y), z);
}
It used the same precision Doom is using internally for distance calculations as a fixed point value.
[code]
function int abs(int x)
{
if (x>=0) return x;
return -x;
}
function int min(int x, int y)
{
if (x<y) return x;
else return y;
}
function int AproxDistance(int dx, int dy)
{
int dx = abs(dx);
int dy = abs(dy);
return dx+dy-(min(dx,dy)>>1);
}
function void GetDistance(int tid)
{
int x=abs(GetActorX(tid)-GetActorX(activatortid()));
int y=abs(GetActorY(tid)-GetActorY(activatortid()));
int z=abs(GetActorZ(tid)-GetActorZ(activatortid()));
return AproxDistance(AproxDistance(x,y), z);
}
[/code]
It used the same precision Doom is using internally for distance calculations as a fixed point value.