void MoveEntityToEntity(string &in asEntity, string &in asDestEntity, float afSpace, float afFreq)
{
if(GetLocalVarInt("Moving"+asEntity) == 1)
{
AddDebugMessage("Object already moving", false);
return;
}
SetLocalVarFloat("MoveFreq_"+asEntity, afFreq);
SetLocalVarFloat("MoveSpace_"+asEntity, afSpace);
float afAmountX = GetEntityPosX(asDestEntity)-GetEntityPosX(asEntity);
SetLocalVarFloat("MoveAmountX_"+asEntity, MathSqrt(MathPow(afAmountX, 2)));
SetLocalVarFloat("MoveSpaceX_"+asEntity, afSpace);
if(afAmountX < 0)
{
SetLocalVarFloat("MoveSpaceX_"+asEntity, -afSpace);
}
float afAmountY = GetEntityPosY(asDestEntity)-GetEntityPosY(asEntity);
SetLocalVarFloat("MoveAmountY_"+asEntity, MathSqrt(MathPow(afAmountY, 2)));
SetLocalVarFloat("MoveSpaceY_"+asEntity, afSpace);
if(afAmountY < 0)
{
SetLocalVarFloat("MoveSpaceY_"+asEntity, -afSpace);
}
float afAmountZ = GetEntityPosZ(asDestEntity)-GetEntityPosZ(asEntity);
SetLocalVarFloat("MoveAmountZ_"+asEntity, MathSqrt(MathPow(afAmountZ, 2)));
SetLocalVarFloat("MoveSpaceZ_"+asEntity, afSpace);
if(afAmountZ < 0)
{
SetLocalVarFloat("MoveSpaceZ_"+asEntity, -afSpace);
}
AddTimer(asEntity, 0.0f, "MoveObjectTimer");
}
void MoveEntityOnAxis(string &in asEntity, float afAmountX, float afAmountY, float afAmountZ, float afSpace, float afFreq)
{
if(GetLocalVarInt("Moving"+asEntity) == 1)
{
AddDebugMessage("Object already moving", false);
return;
}
SetLocalVarFloat("MoveFreq_"+asEntity, afFreq);
SetLocalVarFloat("MoveSpace_"+asEntity, afSpace);
SetLocalVarFloat("MoveAmountX_"+asEntity, MathSqrt(MathPow(afAmountX, 2)));
SetLocalVarFloat("MoveSpaceX_"+asEntity, afSpace);
if(afAmountX < 0)
{
SetLocalVarFloat("MoveSpaceX_"+asEntity, -afSpace);
}
SetLocalVarFloat("MoveAmountY_"+asEntity, MathSqrt(MathPow(afAmountY, 2)));
SetLocalVarFloat("MoveSpaceY_"+asEntity, afSpace);
if(afAmountY < 0)
{
SetLocalVarFloat("MoveSpaceY_"+asEntity, -afSpace);
}
SetLocalVarFloat("MoveAmountZ_"+asEntity, MathSqrt(MathPow(afAmountZ, 2)));
SetLocalVarFloat("MoveSpaceZ_"+asEntity, afSpace);
if(afAmountZ < 0)
{
SetLocalVarFloat("MoveSpaceZ_"+asEntity, -afSpace);
}
AddTimer(asEntity, 0.0f, "MoveObjectTimer");
}
void MoveObjectTimer(string &in asTimer)
{
SetLocalVarInt("Moving"+asTimer, 1);
if(GetLocalVarFloat("MoveAmountX_"+asTimer) != 0)
{
SetEntityPos(asTimer, GetEntityPosX(asTimer)+GetLocalVarFloat("MoveSpaceX_"+asTimer), GetEntityPosY(asTimer), GetEntityPosZ(asTimer));
AddLocalVarFloat("MoveAmountX_"+asTimer, -GetLocalVarFloat("MoveSpace_"+asTimer));
if(GetLocalVarFloat("MoveAmountX_"+asTimer) < 0)
{
SetLocalVarFloat("MoveAmountX_"+asTimer, 0);
}
}
if(GetLocalVarFloat("MoveAmountY_"+asTimer) != 0)
{
SetEntityPos(asTimer, GetEntityPosX(asTimer), GetEntityPosY(asTimer)+GetLocalVarFloat("MoveSpaceY_"+asTimer), GetEntityPosZ(asTimer));
AddLocalVarFloat("MoveAmountY_"+asTimer, -GetLocalVarFloat("MoveSpace_"+asTimer));
if(GetLocalVarFloat("MoveAmountY_"+asTimer) < 0)
{
SetLocalVarFloat("MoveAmountY_"+asTimer, 0);
}
}
if(GetLocalVarFloat("MoveAmountZ_"+asTimer) != 0)
{
SetEntityPos(asTimer, GetEntityPosX(asTimer), GetEntityPosY(asTimer), GetEntityPosZ(asTimer)+GetLocalVarFloat("MoveSpaceZ_"+asTimer));
AddLocalVarFloat("MoveAmountZ_"+asTimer, -GetLocalVarFloat("MoveSpace_"+asTimer));
if(GetLocalVarFloat("MoveAmountZ_"+asTimer) < 0)
{
SetLocalVarFloat("MoveAmountZ_"+asTimer, 0);
}
}
if(GetLocalVarFloat("MoveAmountX_"+asTimer) == 0 && GetLocalVarFloat("MoveAmountY_"+asTimer) == 0 && GetLocalVarFloat("MoveAmountZ_"+asTimer) == 0)
{
SetLocalVarInt("Moving"+asTimer, 0);
OnArrival(asTimer);
return;
}
AddTimer(asTimer, GetLocalVarFloat("MoveFreq_"+asTimer), "MoveObjectTimer");
}
void OnArrival(string &in asEntity)
{
}