GetDistance Non-Action (Double version)

- Added GetDistance(bool checkz, ptr = aaptr_target).
- Returns the distance of an actor. Must be target, master or tracer.
This commit is contained in:
MajorCooke 2016-02-10 17:13:50 -06:00
parent 646f7a1f90
commit e04fe06226
2 changed files with 36 additions and 0 deletions

View File

@ -250,6 +250,41 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, CountInv)
return 0;
}
//==========================================================================
//
// GetDistance
//
// NON-ACTION function to get the distance in double.
//
//==========================================================================
DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetDistance)
{
if (numret > 0)
{
assert(ret != NULL);
PARAM_PROLOGUE;
PARAM_OBJECT(self, AActor);
PARAM_BOOL(checkz);
PARAM_INT_OPT(ptr) { ptr = AAPTR_TARGET; }
AActor *target = COPY_AAPTR(self, ptr);
if (!target || target == self)
{
ret->SetFloat(false);
}
else
{
fixedvec3 diff = self->Vec3To(target);
diff.z += (target->height - self->height) / 2;
const double lengthsquared = TVector3<double>(diff.x, diff.y, diff.z).LengthSquared();
ret->SetFloat(lengthsquared);
}
return 1;
}
return 0;
}
//==========================================================================
//
// A_RearrangePointers

View File

@ -41,6 +41,7 @@ ACTOR Actor native //: Thinker
native bool CheckClass(class<Actor> checkclass, int ptr_select = AAPTR_DEFAULT, bool match_superclass = false);
native bool IsPointerEqual(int ptr_select1, int ptr_select2);
native int CountInv(class<Inventory> itemtype, int ptr_select = AAPTR_DEFAULT);
native float GetDistance(bool checkz, int ptr = AAPTR_DEFAULT);
// Action functions
// Meh, MBF redundant functions. Only for DeHackEd support.