Files
MinecraftConsoles/Minecraft.World/EntityPos.cpp
ModMaker101 a9be52c41a Project modernization (#630)
* Fixed boats falling and a TP glitch #266

* Replaced every C-style cast with C++ ones

* Replaced every C-style cast with C++ ones

* Fixed boats falling and a TP glitch #266

* Updated NULL to nullptr and fixing some type issues

* Modernized and fixed a few bugs

- Replaced most instances of `NULL` with `nullptr`.
- Replaced most `shared_ptr(new ...)` with `make_shared`.
- Removed the `nullptr` macro as it was interfering with the actual nullptr keyword in some instances.

* Fixing more conflicts

* Replace int loops with size_t and start work on overrides
2026-03-08 09:56:03 +07:00

62 lines
1.1 KiB
C++

#include "stdafx.h"
#include "Entity.h"
#include "EntityPos.h"
EntityPos::EntityPos(double x, double y, double z, float yRot, float xRot)
{
this->x = x;
this->y = y;
this->z = z;
this->yRot = yRot;
this->xRot = xRot;
rot = true;
move = true;
}
EntityPos::EntityPos(double x, double y, double z)
{
yRot = xRot = 0.0f;
this->x = x;
this->y = y;
this->z = z;
move = true;
rot = false;
}
EntityPos::EntityPos(float yRot, float xRot)
{
x = y = z = 0.0;
this->yRot = yRot;
this->xRot = xRot;
rot = true;
move = false;
}
EntityPos *EntityPos::lerp(shared_ptr<Entity> e, float f)
{
double xd = e->x+(x-e->x)*f;
double yd = e->y+(y-e->y)*f;
double zd = e->z+(z-e->z)*f;
float yrdd = Mth::wrapDegrees(yRot - e->yRot);
float xrdd = Mth::wrapDegrees(xRot - e->xRot);
float yrd = Mth::wrapDegrees(e->yRot + yrdd * f);
float xrd = Mth::wrapDegrees(e->xRot + xrdd * f);
if (rot && move)
{
return new EntityPos(xd, yd, zd, yrd, xrd);
}
if (move)
{
return new EntityPos(xd, yd, zd);
}
if (rot)
{
return new EntityPos(yrd, xrd);
}
return nullptr;
}