//Experimental canmoe functions for 2.8.x
// The maths here depend on if the Ghost_Step is in full pixels per frame
// or if it isPixels per frame * 100.//e.g., IDR if it is 100 for one pixel/frame using Ghost_Step, or 1.0
// Basic model for imprecision, assuming that step is an integer (e.g. 250 == 2.5 pixels per frame), as in the Enemy Editor
// If step is a float as in the engine (type 'fix' there), then we need to remove the *0.01
void Ghost_CanMoveAtAngle(float angle, float step, float imprecision, bool onlycheckdest)
{
if(onlycheckdest)
{
if(Ghost_CanMovePixel(VectorX(q, angle), VectorY(q, angle), Ghost_Z>0))
{
//can_move_imprecise
return true;
}
if(Ghost_CanMovePixel(VectorX(q+imprecision, angle), VectorY(q+imprecision, angle), Ghost_Z>0))
{
return true;
}
return false;
}
else
{
//bool can_move_imprecise;
for ( int q = Max((step*0.01), 1); q > 0; --q )
{
if(Ghost_CanMovePixel(VectorX(q, angle), VectorY(q, angle), Ghost_Z>0))
{
//can_move_imprecise
return true;
}
if(Ghost_CanMovePixel(VectorX(q+imprecision, angle), VectorY(q+imprecision, angle), Ghost_Z>0))
{
return true;
}
}
return false;
}
}
Comments